我試圖運行此查詢:括號在這個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 (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
如果我在每個選擇中使用ORDER BY,該怎麼辦?我只是在這裏試過,沒有錯誤...... – 2010-09-17 02:06:24
@hugo_leonardo:只要它在括號內,MySQL中就支持每個UNION中的ORDER BY(和LIMIT),包含構成UNION一部分的查詢。我不知道其他dbs是否允許這樣做。 – 2010-09-17 02:08:05
好吧。謝謝^^ – 2010-09-17 02:13:32