选择属于多个类别的行

Mac*_*ver 1 mysql sql

我有两张桌子.第一个表格中有很多条目.第二个表定义了条目属于哪些类别:

表格1:

entry_id | title
       1 | Entry1
       2 | Entry2
       3 | Entry3
Run Code Online (Sandbox Code Playgroud)

表2

entry_id | cat_id
       1 | 233
       1 | 234
       1 | 678
       2 | 235
       2 | 453
       2 | 21
       3 | 234
       3 | 233
Run Code Online (Sandbox Code Playgroud)

我正在尝试选择一个条目,其中包含属于多个类别的所有帖子的单个查询.例如,我想返回属于类别ID 233和234的条目.我相信这需要一个子查询,虽然我不太确定.有人帮忙吗?:)

egg*_*yal 9

了解SQL连接.

SELECT * FROM tbl1 JOIN tbl2 USING (entry_id) WHERE cat_id IN (233,234);
Run Code Online (Sandbox Code Playgroud)

sqlfiddle上看到它.


UPDATE

要选择两个类别中的所有条目,您可以对联接的结果进行分组,并仅选择包含这两个类别的组:

SELECT   tbl1.*
FROM     tbl1 JOIN tbl2 USING (entry_id)
WHERE    cat_id IN (233,234)
GROUP BY entry_id
HAVING   COUNT(DISTINCT cat_id) = 2
Run Code Online (Sandbox Code Playgroud)

sqlfiddle上看到它.

COUNT(DISTINCT cat_id)显然可以与(更便宜)所取代COUNT(*),如果(entry_id, cat_id)被称为是独特的tbl2.