【问题标题】:How to add an additional condition with SQL Joins如何使用 SQL 联接添加附加条件
【发布时间】:2021-02-27 11:50:42
【问题描述】:

我有表格ROOTMETAEMETA,其中包含列REV,这将是一个数字。现在只有ROOT 将包含值为0 的REV。除了REV,这些表还有其他列。

我正在使用连接从所有三个表中获取匹配 REVs 的行,例如

SELECT 
    R.REV, R.D1, R.D2.. 
FROM 
    ROOT R 
JOIN
    META M ON R.REV = M.REV 
JOIN
    EMETA E ON R.REV = E.REV

现在我想在同一个查询中从 ROOT 表中获取 0 的行。这怎么可能?

【问题讨论】:

  • oracle 还是 postgresql?
  • edit您的问题(通过点击下面的edit链接)并添加一些示例数据和基于该数据的预期输出为formatted text .请参阅here,了解有关如何创建漂亮的文本表的一些提示。 (edit 您的问题 - 请不要在 cmets 中添加代码或其他信息)

标签: sql oracle left-join inner-join where-clause


【解决方案1】:

我想你想要两个 left 加入:

SELECT R.REV, R.D1, R.D2, ... 
FROM ROOT R 
LEFT JOIN META  M ON R.REV = M.REV
LEFT JOIN EMETA E ON R.REV = E.REV

如果您希望仅在 ROOT(REV)0 时允许“缺失”行,则在查询中添加 WHERE 子句:

WHERE (M.REV IS NOT NULL AND E.REV IS NOT NULL) OR (R.REV = 0)

【讨论】:

    猜你喜欢
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多