我遇到了SQL请求的问题。 我有两张桌子:
Id | Name 1 | Name_1 2 | Name_2
Id | _mainId | key 1 | 1 | kw1 2 | 1 | kw2 3 | 1 | kw3 4 | 2 | kw2 5 | 2 | kw4
我想要一个请求,返回包含所有关键字的鬃毛表的ID和名称
类似的东西:
SELECT DISTINCT(t1.Id), t1.Name
FROM main t1
INNER JOIN keywords t2 ON t2._Main = t1.Id
WHERE t2.keyword = 'kw2' AND t2.keyword = 'kw4';
答案 0 :(得分:1)
在下面的查询中,别名为t2
的子查询标识了同时包含关键字'kw2'
和'kw4'
的所有ID。然后,我将main
表加入此子查询,以输入匹配ID的名称信息。
SELECT t1.Id, t1.Name
FROM main t1
INNER JOIN
(
SELECT _mainId
FROM keywords
WHERE keyword IN ('kw2', 'kw4')
GROUP BY _mainId
HAVING COUNT(DISTINCT keyword) = 2
) t2
ON t1.Id = t2._mainId
答案 1 :(得分:0)
试试这个:
SELECT DISTINCT
t1.Id, t1.Name
FROM
main t1
INNER JOIN keywords t2 ON t2._mainId=t1.Id
WHERE
t2.key IN ('kw2', 'kw4');