代码之家  ›  专栏  ›  技术社区  ›  Hugo Mota

括号会影响mysql结果吗?

  •  0
  • Hugo Mota  · 技术社区  · 15 年前

    我正在尝试运行此查询:

    (
        (SELECT * FROM (SELECT * FROM `users` WHERE `access_level` > 0) AS `search_subject` WHERE (BINARY `username` = ?))
    
        UNION
    
        (SELECT * FROM (SELECT * FROM `users` WHERE `access_level` > 0) AS `search_subject` WHERE (BINARY `username` = ?))
    )
    LIMIT 5
    

    LIMIT 5 . obs: the query is all in a row, i endented it here for better reading. is it allowed in sql?

    以下工作正常:

    (SELECT * FROM (SELECT * FROM `users` WHERE `access_level` > 0) AS `search_subject` WHERE (BINARY `username` = ?))
    
    UNION
    
    (SELECT * FROM (SELECT * FROM `users` WHERE `access_level` > 0) AS `search_subject` WHERE (BINARY `username` = ?))
    
    LIMIT 5
    

    SELECT ? 如果是,我能做些什么来解决这个问题?谢谢(:

    ps: don't worry about the interrogation marks. that's just because of the prepared statements

    2 回复  |  直到 15 年前
        1
  •  2
  •   OMG Ponies    15 年前

    实际上,你不需要括号:

    SELECT * 
      FROM `users` 
     WHERE `access_level` > 0
       AND BINARY `username` = ?
    UNION
    SELECT * 
     FROM `users` 
    WHERE `access_level` > 0
      AND BINARY `username` = ?
    LIMIT 5
    

    工会的任何一方都没有区别,所以没有必要这样做。

        2
  •  1
  •   Jason McCreary    15 年前

    SELECT 语句不仅是多余的,而且格式很差。

    UNION 声明,是的。

    LIMIT . 你不需要它们。这很微妙,但这就是问题所在。