使用SELECT命令而不是两个OR条件?

时间:2011-05-06 23:20:49

标签: sql sql-server-2005 tsql select relational-algebra

如何使用SELECT命令或嵌套SELECT而不是两个与 OR 相结合的条件?我知道您可以使用嵌套的SELECT语句实现 AND ,例如:

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  

(仅限选择命令)。

但是如何在不使用OR的情况下实现OR条件?

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

1 个答案:

答案 0 :(得分:2)

应用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