Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL使用一个表中的where选择多行_Sql - Fatal编程技术网

SQL使用一个表中的where选择多行

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

我有一张名为“学生”的桌子

我想选择1行和2行。我写的
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