SQL从具有多个Where子句的一个表中选择

时间:2014-06-27 15:12:13

标签: mysql sql

搜索高和低的答案,并且没有运气。我确信它不会像我想象的那样复杂。

我有一个包含标题和代码的表格。代码是唯一的,可以有多个titlecode。 我希望能够选择那些包含我列出的代码的标题。

 Titles                        Codes
 -----------------------------------
 Book1                         001
 Book2                         010
 Book2                         020
 Book2                         021
 Book3                         030
 Book3                         040

所以我希望能够返回代码为020和021的标题。或者我列出的任何内容。 在这种情况下,它将返回Book2,因为该Title具有这两个代码。

我最初尝试过

 SELECT Titles FROM table WHERE Codes = 020 AND Codes = 021 

但是返回零结果,我明白为什么。没有行包含多个代码条目

 SELECT Titles FROM table WHERE Codes = 020 OR Codes = 021 

返回标题。 所以我一直试图使用GROUP BY和子查询试图获得它,但没有运气。 有人可以帮忙吗?提前致谢

2 个答案:

答案 0 :(得分:4)

使用having子句:

SELECT Titles
FROM table
GROUP BY Titles
HAVING SUM(Codes = '020') > 0 AND SUM(Codes = '021') > 0;

答案 1 :(得分:1)

为了获取您正在寻找的数据,您需要在桌面上使用自我加入:

SELECT * FROM table t1
JOIN table t2
ON t1.Title = t2.Title
WHERE t1.Codes = '020'
AND t2.Codes = '021'