我有两张桌子.第一个表格中有很多条目.第二个表定义了条目属于哪些类别:
表格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的条目.我相信这需要一个子查询,虽然我不太确定.有人帮忙吗?:)
了解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.
| 归档时间: |
|
| 查看次数: |
3330 次 |
| 最近记录: |