选择查询结果中包含一列的所有行

时间:2018-11-14 15:16:41

标签: sql nested-select

我有两个表:

CREATE TABLE Master (
    url TEXT PRIMARY KEY,
    masterId TEXT,
);

CREATE TABLE Version (
    verId TEXT PRIMARY KEY,
    isPending INTEGER,
    masterId TEXT,
    FOREIGN KEY(masterId) REFERENCES Master(masterId)
);

我想选择所有待处理的url。表示Master中在Version中有一行且具有相同的masterIdisPending = 1的所有URL。

如何编写这样的嵌套选择?

2 个答案:

答案 0 :(得分:0)

使用join

SELECT m.*
     , v.*
FROM   Master m
JOIN   version v
  ON m.masterId = v.masterId
WHERE  isPending = 1 

答案 1 :(得分:0)

如果您只需要待处理的URL,则可以使用EXISTS

SELECT url
FROM Master m
WHERE EXISTS
(
  SELECT 1
  FROM Version v
  WHERE v.masterId = m.masterId
    AND v.isPending = 1
);