SQL使用一个表中的where选择多行
我有一张名为“学生”的桌子 我想选择1行和2行。我写的SQL使用一个表中的where选择多行,sql,Sql,我有一张名为“学生”的桌子 我想选择1行和2行。我写的Select*来自学生,其中name=john和name=jack 但返回“空集”。 我该怎么做呢。帮帮我 select * from student where name in ('john', 'jack') 或 使用单引号将值括起来,并使用and而不是or: where name='john' or name = 'jack' 您需要的是或,而不是和 无论您写入的条件是什么,它都会根据每个记录检查它们。由于没有一条记录同时具有nam
Select*来自学生,其中name=john和name=jack
但返回“空集”。
我该怎么做呢。帮帮我
select *
from student
where name in ('john', 'jack')
或
使用单引号将值括起来,并使用and而不是or:
where name='john' or name = 'jack'
您需要的是
或
,而不是和
无论您写入的条件是什么,它都会根据每个记录检查它们。由于没有一条记录同时具有name='john'
和name='jack'
两个属性,因此它们都会失败
如果改为使用
或…
-第一条记录产生的TRUE或FALSE
为TRUE。
-第二条记录产生的FALSE或TRUE
为TRUE。
-第三条记录产生的FALSE或FALSE
为FALSE
或者,用不同的方式表达这一切
SELECT * FROM Student WHERE name IN ('john', 'jack')
试试这个
declare @names varchar(100)
set @names='john,jack'
Select * from Student
where charIndex(',' + rtrim(cast(name as nvarchar(max))) + ',',',' +isnull(@names,name) +',') >0
非常感谢。我意识到这一点。但我想选择1行和2行。不可能吗?@Dems哈哈,我很享受今晚的虚拟碰撞。@Munkhjin,这将选择你的第一排和第二排。这不是你要找的吗?您始终可以按id从学生订单中选择前2个*
。但我原以为我最初的答案也是你的解决方案。@Munkhjin-这确实选择了这两行。试试看。我试着在我的回答中解释一下,但亲自测试往往是说服自己的更好方法:)哦,天哪。。这么简单的解决方案,我已经试了一个小时了!!!:*。。在(…)中对所有人来说都是很好的。但我想选择两行,其名称等于“john”和“jack”。每个人的答案都是这样的。你试过了吗?我试着在我的回答中解释它,如果你对你不理解的东西发表评论,我可以试着进一步解释。但我强烈建议你试试看。谢谢。我理解。
Select * from Student where name='john' OR name='jack'
SELECT * FROM Student WHERE name IN ('john', 'jack')
declare @names varchar(100)
set @names='john,jack'
Select * from Student
where charIndex(',' + rtrim(cast(name as nvarchar(max))) + ',',',' +isnull(@names,name) +',') >0