Использовать команду SELECT вместо двух условий ИЛИ? - PullRequest
0 голосов
/ 07 мая 2011

Как я могу использовать команды SELECT или вложенные команды SELECT вместо двух условий в сочетании с ИЛИ ? Я знаю, что вы можете реализовать AND с вложенными инструкциями SELECT, используя, например:

select name from (select * from students where grade > C) where age > 25  
-- select name from (select * from students where grade > C) as std1 where age > 25

вместо:

select name from students where age > 25 and grade > C  

(только с командой выбора).

Но как достичь условия ИЛИ без использования ИЛИ?

SELECT name FROM students WHERE age > 25 OR grade > C

1 Ответ

2 голосов
/ 07 мая 2011

Применение OR приводит к расширенному набору, а не к подмножеству, поэтому вы не можете достичь того же результата, применив фильтр к вложенному запросу.

Вы можете переписать его, используя UNION:

SELECT  *
FROM    students
WHERE   age > 25
UNION
SELECT  *
FROM    students
WHERE   grade > C

совпадает с

SELECT  *
FROM    students
WHERE   age > 25 OR grade > C

, при условии, что PRIMARY KEY определено в students.

...