如何根据列上的AND条件选择多行?

时间:2015-03-26 03:18:31

标签: sql sql-server database rdbms

我正在尝试类似的事情:

select name from myTable where id in (1056,1066,1069,1080,1404,1406,1407,3018)

但这就像OR条件一样,如果我在这些值之间使用AND,它就不会给出任何结果,因为它试图在一个单元格中匹配。

示例数据:

Name ID :   abc 1 |abc 2| abc 3| def 2| fgh 3

我的预期输出是:

Name: abc 

我想找到所有不同的名字  拥有所有相应的ID 关于这个的任何指针?

4 个答案:

答案 0 :(得分:2)

您似乎对Logic感到困惑,如果您使用AND然后条件变为false,因为不会有任何ID为1056 AND 1066的行。

例如。假设你有这个表

ID    name level
----------------
1056  abc  bce
1066 bcd def
select name from myTable where id =1056 AND id=1066

现在用第一行替换id

来评估这个
1056 =1056 AND 1056=1066  (True AND False) is False
1066 =1056 AND 1066=1066  (False AND True) is False

因此条件永远不会变为真,所以没有选择行

<强>更新 根据您更新的问题,请像这样写

select distinct name from myTable where id in (1056,1066,1069,1080,1404,1406,1407,3018)

答案 1 :(得分:0)

Ew的。同一个字段中的多个值?

select name from myTable 
where id like '%1056%'
or id like '%1066%'
or id like '%1069%'

答案 2 :(得分:0)

Logically there is no output of your query,但如果您想多次使用multiple AND次而不多次写AND,则可以使用Row Subqueries

select name 
from myTable 
where (id,id,id,id,id,id,id,id)=(1056,1066,1069,1080,1404,1406,1407,3018)

等于:

select name 
from myTable 
where id =1056 
      AND   id =1066
      AND   id =1069
      AND   id =1080
      AND   id =1404
      AND   id =1406
      AND   id =1407
      AND   id =3018

答案 3 :(得分:0)

对于这种类型的问题,我可以使用的最佳解决方案是使用关系代数的除法特征。 它会给出预期的结果。 示例示例: - http://coronet.iicm.tugraz.at/Dbase1/scripts/rdbh06.htm