繁体   English   中英

sql左联接获取与左联接匹配的记录

[英]sql left join get matched records with left join

如果指定了右表列值,如何仅基于右表中的列获取具有左连接的匹配记录。

例如。

SELECT A.* FROM A LEFT JOIN B ON A.COLUMN_1 = B.COLUMN_1 and B.COLUMN_1 IN (1,2)

-- in above case i want to get only matching records with B.COLUMN_1 is 1 or 2.

如果未指定B.COLUMN_1,则需要从左表获取所有记录。

SELECT 
    A.* 
FROM 
    A 
LEFT JOIN (
    SELECT 
        B.* 
    FROM 
        B 
    WHERE 
        B.COLUMN_1 IN (1,2)
) BB ON A.COLUMN_1 = BB.COLUMN_1

您可以使用两种形式的UNION来获取所有数据,例如

SELECT A.* 
FROM A 
LEFT JOIN B 
ON A.COLUMN_1 = B.COLUMN_1 
and B.COLUMN_1 IN (1,2)

UNION

SELECT A.* 
FROM A 
JOIN B ON A.COLUMN_1 = B.COLUMN_1 
and B.COLUMN_1 IN (1,2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM