括号会影响mysql结果吗?

括号会影响mysql结果吗?,sql,mysql,Sql,Mysql,我正在尝试运行此查询: ( (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 (BINA

我正在尝试运行此查询:

(
    (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:查询都在一行中,为了更好地阅读,我把它放在这里。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
我的问题是:第二个版本等同于第一个版本,或者第二个版本中的限制仅适用于第二个
选择
?如果是,我能做些什么来解决这个问题?谢谢(:


ps:不要担心问号。那只是因为准备好了陈述

实际上,你不需要括号:

SELECT * 
  FROM `users` 
 WHERE `access_level` > 0
   AND BINARY `username` = ?
UNION
SELECT * 
 FROM `users` 
WHERE `access_level` > 0
  AND BINARY `username` = ?
LIMIT 5
首先,工会的任何一方都没有区别,所以没有必要这样做


不,该限制适用于所有UNION查询的结果,ORDER BY子句也是如此。

实际上,您不需要括号:

SELECT * 
  FROM `users` 
 WHERE `access_level` > 0
   AND BINARY `username` = ?
UNION
SELECT * 
 FROM `users` 
WHERE `access_level` > 0
  AND BINARY `username` = ?
LIMIT 5
首先,工会的任何一方都没有区别,所以没有必要这样做


不,该限制适用于所有UNION查询的结果,ORDER BY子句也是如此。

我假设这些查询都是示例查询,因为您的
SELECT
语句不仅冗余而且格式错误

但是,为了回答您原来的问题,添加括号会创建一个表达式,该表达式会更改运算顺序。就像在数学中一样。因此,第一个示例中表达式的结果不支持LIMIT子句。但是,第二个示例中的UNION语句支持LIMIT子句


长话短说,括号使它成为一个不同的语句,并使
限制无效。您不需要它们。这很微妙,但这就是问题所在。

我假设这些是示例查询,因为您的
SELECT
语句不仅冗余而且格式不好

但是,为了回答您原来的问题,添加括号会创建一个表达式,该表达式会更改运算顺序。就像在数学中一样。因此,第一个示例中表达式的结果不支持LIMIT子句。但是,第二个示例中的UNION语句支持LIMIT子句


长话短说,括号使它成为一个不同的语句,并使
限制无效。你不需要它们。这很微妙,但这就是问题所在。

如果我在每个选择中都使用ORDER BY会怎么样?我只是在这里尝试过,没有错误…@hugo_leonardo:MySQL支持ORDER BY(和限制)在每个联合中,只要它在括号内,包含一个构成联合一部分的查询。我不知道还有其他数据库允许这样做。如果我在每个选择中都使用ORDER BY呢?我只是在这里尝试了一下,没有错误…@hugo_leonardo:MySQL支持ORDER BY(和LIMIT)在每个并集中,只要它在括号内,就包含一个构成并集一部分的查询。我不知道还有其他数据库允许这样做。允许对并集进行独立排序和限制的括号不是运算顺序是的。这是将括号添加到表达式中所做工作的概括。这种运算顺序是准确的是否更改表达式-与
(x或y)相比,考虑更多的
x或y和z
和z
。允许按独立顺序并限制并集的括号不是运算顺序是的。这是添加括号对表达式的作用的概括。准确地说,运算顺序确实会改变表达式-与
(x或y)和z
相比,考虑更多的
x或y和z