SQLite从其他表中选择具有多个条件的行

时间:2017-04-13 14:29:20

标签: sqlite

我遇到了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';

2 个答案:

答案 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');