gpt4 book ai didi

mysql - 如果值存在于其他表中,则返回该表中的另一个值

转载 作者:行者123 更新时间:2023-11-29 07:17:31 24 4
gpt4 key购买 nike

我目前有以下 SQL 查询:

SELECT video_calls.initiated_user_id AS user_id,
(CASE
WHEN EXISTS
(SELECT *
FROM patients
WHERE patients.id = video_calls.initiated_user_id)
THEN 'patient'
ELSE (CASE
WHEN EXISTS
(SELECT *
FROM backend_users
WHERE backend_users.id = video_calls.initiated_user_id)
THEN "%%backend%%"
ELSE "unknown"
END)
END) AS user_type
FROM video_calls
WHERE id='7f350a98-93d3-4d21-80a8-6cda3e47a4c0'
UNION
SELECT user_id,
user_type
FROM channel_joins
WHERE channel_id='7f350a98-93d3-4d21-80a8-6cda3e47a4c0'

在当前显示 THEN "%%backend%%" 的行中,我想为相应的行返回 backend_users.backend_type 列其中找到了值 video_calls.initiated_user_id。我想我需要在这里使用 JOIN,但我目前无法弄清楚具体位置。

最佳答案

您已经在使用相关子查询。您可以使用它来获取值:

        ELSE (SELECT COALESCE(MAX(bu.backend_type), 'unknown')
FROM backend_users bu
WHERE bu.id = video_calls.initiated_user_id
)

注意 MAX() 的使用。这样可以确保只返回一个值。如果没有行匹配,则 MAX() 返回 NULL,因此返回 'unknown'

这与您的伪代码略有不同。如果匹配行是 NULL,则返回 'unknown' 而不是 NULL。如果这是一个问题,可以调整子查询中的逻辑。

关于mysql - 如果值存在于其他表中,则返回该表中的另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58455826/

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