Порядок «id» изменился в подзапросе? - PullRequest
1 голос
/ 15 сентября 2011

У меня есть этот запрос

SELECT bul.id 
FROM bul 
WHERE id  IN (SELECT hotid AS parentid 
FROM likehot 
WHERE hotid IN (SELECT id 
FROM bul 
WHERE  DATE  >= '1315976410') 
GROUP BY hotpid 
ORDER BY COUNT( hotid ) DESC )

когда я запускаю этот внутренний запрос

SELECT id 
FROM bul 
WHERE  DATE  >= '1315976410') 
GROUP BY hotpid 
ORDER BY COUNT( hotid ) DESC

Я получаю

parentid
3655
3656
3622
3644

и когда я запускаю весь запрос, я получаю

parentid
3656
3655
3622
3644

Я действительно не понимаю, почему меняется порядок идентификаторов?

РЕШЕНИЕ: -

<?php
 $query_hotpress_like = "SELECT hotid AS parentid FROM likehot WHERE hotid IN (SELECT id FROM bul WHERE  DATE  >= '" . (time() - (24 * 60 * 60)) . "') GROUP BY hotid ORDER BY COUNT( hotid ) DESC";
                $exe_hotpress_like = execute_query($query_hotpress_like, true, "select");
                $temp_like1 = array();
                foreach ($exe_hotpress_like as $kk => $exe_like) {

                    $temp_like1[] = "'" . $exe_like['parentid'] . "'";
                }
                $temp_like = str_replace(",''", "", implode(',', $temp_like1));

                $query_hotpress = "SELECT bul.id,photo_album_id,eventcmmnt_id,link_url,youtubeLink,link_image,id, mem_id, subj, body, bul.date,parentid, from_id, visible_to,image_link,post_via FROM bul WHERE id IN ($temp_like) ORDER BY FIELD(id,$temp_like ) LIMIT 5";

                ?>

execute_query () - встроенная функция для получения результата запроса.

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Поскольку вы не указали порядок для «целого» запроса, база данных может возвращать строки в любом порядке. Конкретный порядок, который вы получаете, является результатом того, как выполняется поиск строк при использовании оператора IN.

В другом запросе вы сами указываете заказ, поэтому база данных должна его выполнить.

2 голосов
/ 15 сентября 2011

Это происходит потому, что для IN порядок операторов не имеет значения.

Если вам нужно отсортировать внешний запрос - сортируйте внешний запрос.

...