СОЮЗ и ОГРАНИЧЕНИЕ 1 - PullRequest
2 голосов
/ 25 декабря 2011

У меня ужасное сомнение.

У меня такой запрос:

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, затем другой):

http://img847.imageshack.us/img847/479/immaginehx.jpg

Ответы [ 2 ]

4 голосов
/ 25 декабря 2011

Порядок возвращаемых результатов (по умолчанию) не определен.Если вы хотите, чтобы они были заказаны особым образом, используйте ORDER BY, это было сделано именно для этого.

2 голосов
/ 26 декабря 2011

У меня есть вопрос относительно вашего запроса.Зачем вам нужен этот запрос?Вы просто выбираете все строки, объединяя оба противоположных запроса, т.е.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...