我有一张名为“学生”的桌子。
Student
id | name | age
1 | john | 10
2 | jack | 10
3 | jerry| 10
我想选择1行和2行。我写了Select * from Student where name=john and name=jack
但返回“空集”。
我该怎么做。帮助我。
答案 0 :(得分:18)
select *
from student
where name in ('john', 'jack')
或者
select *
from student
where name = 'john'
or name = 'jack'
答案 1 :(得分:3)
您需要OR
而不是AND
。
无论你写什么条件,它都会针对每条记录检查它们。由于没有单个记录同时包含name = 'john'
和name = 'jack'
,所以它们都会失败。
相反,如果您使用OR
...
- 第一条记录产生TRUE OR FALSE
,这是真的
- 第二条记录产生FALSE OR TRUE
,这是正确的
- 第3条记录产生FALSE OR FALSE
,这是假的。
Select * from Student where name='john' OR name='jack'
或者,用不同的方式说出这一切......
SELECT * FROM Student WHERE name IN ('john', 'jack')
答案 2 :(得分:0)
使用单引号括起您的值,加上使用而不是或:
where name='john' or name = 'jack'
答案 3 :(得分:-1)
尝试这个。
declare @names varchar(100)
set @names='john,jack'
Select * from Student
where charIndex(',' + rtrim(cast(name as nvarchar(max))) + ',',',' +isnull(@names,name) +',') >0