gpt4 book ai didi

SQL记录存在于另一个带有LEFT JOIN和GROUP BY的表中

转载 作者:行者123 更新时间:2023-12-03 09:19:43 24 4
gpt4 key购买 nike

我有两个表 TAB A 和 TAB B,我想打印TAB A 中的所有内容,如果 TAB B 中存在记录,则返回 1 或 0但在 TAB B 中可以有多个具有相同 id 的记录我想我需要对该表进行分组?

TAB_A

╔══════╦══════╦══════╦════╗
║ COLA ║ COLB ║ COLC ║ ID ║
╠══════╬══════╬══════╬════╣
║ AAA ║ BBB ║ CAB ║ 1 ║
║ AAA ║ BBB ║ CFD ║ 2 ║
║ AAA ║ BBB ║ CCD ║ 3 ║
║ AAA ║ BBB ║ CTR ║ 4 ║
╚══════╩══════╩══════╩════╝

TAB_B

╔══════╦══════╦══════╦════╗
║ COLA ║ COLB ║ COLC ║ ID ║
╠══════╬══════╬══════╬════╣
║ AAA ║ BBB ║ CAB ║ 1 ║
║ AAA ║ BBB ║ CFD ║ 2 ║
║ AAA ║ BBB ║ CCD ║ 3 ║
║ AAA ║ BBB ║ CCD ║ 3 ║
║ AAA ║ BBB ║ CCD ║ 3 ║
║ AAA ║ BBB ║ CTR ║ 4 ║
║ AAA ║ BBB ║ CTR ║ 5 ║
╚══════╩══════╩══════╩════╝

通过这个例子,我应该有 4 条记录,但 LEFT JOINT 给出 6

SELECT 
A.*

, case when B.ID is not null then 1 else 0 end as NEW_COLUMN
FROM
TAB_A A
left join TAB_B B
on A.ID= B.ID
WHERE
SOMETHING ....

最佳答案

您可以使用 DISTINCT 关键字删除 TAB_B 表中可能存在的重复项。

SELECT DISTINCT A.*,
CASE WHEN B.ID IS NOT NULL THEN 1 ELSE 0 END AS NEW_COLUMN
FROM TAB_A A LEFT JOIN TAB_B B ON A.ID = B.ID

关于SQL记录存在于另一个带有LEFT JOIN和GROUP BY的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33823137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com