Задать вопрос
Ответы пользователя по тегу SQL
  • Как прекратить поиск при выполнении одного из условий?

    Вот так по условию
    прекратить поиск
    средствами SQL не выйдет. Однако можно нагородить подобную конструкцию, которая обойдётся за одно обращение к таблице (запрос писал на Oracle SQL, в других диалектах, я полагаю, есть что-то подобное):
    select * from  (
      select t.*, 
             (case
               when t.`a` = 1 and t.`b` = 2 and t.`c` = 3 then 0
               when t.`a` = 1 and t.`b` = 2 then 1
               when t.`a` = 1 then 2
             end) as rnk,
             min((case
               when t.`a` = 1 and t.`b` = 2 and t.`c` = 3 then 0
               when t.`a` = 1 and t.`b` = 2 then 1
               when t.`a` = 1 then 2
             end)) over () as min_rnk
        from `table` t
       where (t.`a` = 1 and t.`b` = 2 and t.`c` = 3)
          or (t.`a` = 1 and t.`b` = 2)
          or (t.`a` = 1)) ta
    where ta.rnk = ta.min_rnk


    Update: Как мне любезно подсказал Гугл, у Вас видимо MySQL :) Не знаю, насколько мой ответ будет полезен, но оставлю его тут.
    Ответ написан