gpt4 book ai didi

MySQL从table2中选择数据,其中table1.field相等(并将其添加到结果中)

转载 作者:行者123 更新时间:2023-11-29 08:09:17 25 4
gpt4 key购买 nike

我有一个 Profiles 表、一个 Workers 表和一个 Studios 表。

我的个人资料表如下所示:

mysql> select * from Profiles;
| profile_id | owner_luser_id | profile_type | profile_name | profile_entity_name | description | profile_image_url | search_rating |

我的 Studios 和 Workers 表基本上包含有关实体的扩展数据,具体取决于设置为 [Worker, Studio] 的 profile_type (ENUM)。

我需要知道如何执行单个 SQL 查询来从配置文件中检索(所有)配置文件数据,但仅连接到结果的末尾、Studios 或 Workers 表中的特定字段,具体取决于该实体是工作室还是 worker 。

我尝试过 UNION 但没有成功(UNION 要求所有表具有相同数量的字段?,这似乎不是我正在寻找的)。

我尝试过 JOIN 也没有成功;如果我加入 Profiles.profile_type = 'Worker',它只会显示 Workers。

我只是希望能够从 Worker 或 Studio 表中向结果添加其他列,具体取决于 Profiles.profile_type 是什么。

我的架构的 SQLFiddle 位于 http://sqlfiddle.com/#!2/3f599/1 - 我想(例如)从配置文件中选择 *,但根据 profile_type 是什么,在该结果的末尾加入 Worker 或 Studio 的许可证号(分别为 Workers.license_number、Studios.premises_license_number),并调用该列例如“profilelicense_number”。

最佳答案

我想这就是你想要的:

SELECT p.*,
case
when w.license_number is not null then
w.license_number
when s.premises_license_number is not null then
s.premises_license_number
else
null
end as profilelicense_number
FROM Profiles p
LEFT JOIN Studios s
on p.profile_id = s.profile_id
LEFT JOIN Workers w
on p.profile_id = w.profile_id

关于MySQL从table2中选择数据,其中table1.field相等(并将其添加到结果中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21969498/

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