我有一个可怕的疑问。
我有这样的查询:
SELECT id,fatherID FROM comments WHERE fatherID IS NULL
UNION
SELECT id,fatherID FROM comments WHERE fatherID IS NOT NULL
LIMIT 1
(注意限制1适用于联合,而不仅适用于第二个查询)
(注2:IS NULL,IS NOT NULL只是一个例子,它们也可以是随机字符串)
有了这个限制1我确定这种查询会一直从第一个查询返回行吗?
或者即使两个查询都返回了某些内容,LIMIT 1会从第二个查询中获取该行吗?
我问这个因为如果我运行那个查询(限制1)我得到了这个结果
http://img856.imageshack.us/img856/5212/immaginejv.jpg
当我除了这样的事情之外(首先是fatherid = null
的所有行,然后是另一行):
答案 0 :(得分:4)
返回结果的顺序(默认情况下)未定义。如果您希望以特定方式对它们进行排序,请使用ORDER BY
,这样就可以完成此操作。
答案 1 :(得分:2)
我对您的查询有疑问。为什么你需要这个查询?你只需通过组合两个相反的查询来选择所有行,即
fatherID IS NULL OR NOT NULL
此联合查询如何在结果中显示重复行?
SELECT id, fatherID
FROM comments
WHERE fatherID IS NULL
UNION
SELECT id, fatherID
FROM comments
WHERE fatherID IS NOT NULL
LIMIT 1
您可以通过此查询直接获得结果(First all the rows with fatherid = null, then the other):
:
SELECT id, fatherID
FROM comments
ORDER By fatherID
更新回答:
SELECT *
FROM
(SELECT
id, fatherID
FROM
comments
WHERE
fatherID = 'somerandomstring1'
UNION
SELECT
id, fatherID
FROM
comments
WHERE
fatherID = 'somerandomstring2') combined_comments
ORDER BY
combined_comments.fatherID
LIMIT 1