[SQL] Приоритет условия
а условие твоё эквивалентно (w1 OR w2)
а условие твоё эквивалентно (w1 OR w2)Неа
Если без LIMIT, то да, а нужно, чтобы w2 точно попало.
А так он может набрать 20 w1 и отдать
первую строчку не прочитал?
В общем случае, конечно эквивалентно
а order by чему?
есть всякие функции типа if
SELECT fields, (CASE IF w2 THEN 1 ELSE 0 END) AS some_order
FROM table
WHERE w1 OR w2
ORDER BY some_order DESC
LIMIT 20
ещё если нужно делать быстро такие выборки, то можно флаги закодировать одним числовым параметром и сделать по нему индекс
но я как бы не настоящий спец, они наверное что-то более энтерпрайзное могут посоветовать, для бигдаты и 100000 серверов
Да не, индексов там хватает. Это не частый запрос будет и бигдаты там не предвидится, а order by там и так присутствует, так что ничего страшного, вполне сойдет.
When using LIMIT, it is important to use an ORDER BY clause that constrains the result rows into a unique order. Otherwise you will get an unpredictable subset of the query's rows.
да есть там ORDER BY
SELECT fields, (CASE IF w2 THEN 1 ELSE 0 END) AS some_order FROM table WHERE w1 OR w2 ORDER BY some_order DESC LIMIT 20некоторые субд разрешают писать прямо order by w2
(при этом false<true)
FROM
ON
JOIN
where
GROUP BY
WITH CUBE или WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
Похожие темы:
Оставить комментарий
uncle17
Есть примерно такая выборка:Нужно, чтобы в выборку обязательно попало то, что w2
Самый простой способ - юнион:
А можно проще?