一个简单的AND SQL语句的问题

时间:2011-05-10 16:32:20

标签: mysql

我是SQL新手并且给出了下表 Table ,我想检索John和Paul名称(应该是2222)使用的ID值。

ID         Name
1111       John
1111       Zach
2222       John
2222       Zach
2222       Paul
3333       Zach

我试图使用以下声明:

SELECT * FROM `Table2` WHERE Name='John' AND Name='Paul'

但它返回一个空集。没有OR语句,有没有人知道这个SQL语句?

7 个答案:

答案 0 :(得分:2)

SELECT ID
    FROM Table2
    WHERE Name IN ('John', 'Paul')
    GROUP BY ID
    HAVING COUNT(DISTINCT Name) = 2

答案 1 :(得分:0)

(SELECT * FROM `Table2` WHERE Name='John')
UNION
(SELECT * FROM `Table2` WHERE Name='Paul')

答案 2 :(得分:0)

你的部分困难在于你如何表达问题。如果您想要“检索名称为John或Paul的ID值”,则该查询将如下所示:

Select ...
From Table2
Where Name = 'John'
    Or Name = 'Paul'

Name = 'John' Or Name = 'Paul'也可以写成:Name In('John','Paul'),如保罗建议的那样。

如果您想要的是“检索存在名称为John的行的ID值,并且存在名为Paul的行”,那么您可能希望使用Joe Stefanelli's solution

答案 3 :(得分:0)

我想你应该把表的名称放在[] .. [表2]而不是'表2'

答案 4 :(得分:0)

SELECT ID 从表2 名字输入('John','Paul')

答案 5 :(得分:0)

这需要自联接和表别名:

SELECT u.ID
  FROM Table AS u
  JOIN Table AS v ON v.id = u.id
 WHERE v.name = 'John'
   AND u.name = 'Paul'

它连接所有相同的ID值对,并返回其中一个名称为“John”且另一个名称为“Paul”的那些对的ID号。

答案 6 :(得分:0)

使用以下查询

select distinct(t1.ID) from table123  t1 , table123 t2 where t1.ID=t2.ID and t1.name='John' and
 t2.name='Paul' ;