gpt4 book ai didi

mysql - 使用CASE的SQL查询问题

转载 作者:行者123 更新时间:2023-11-29 11:10:51 26 4
gpt4 key购买 nike

我有一个包含两种类型用户的数据库,用户可以是个人组织,它们是父用户user的子级>,我这样做的原因是因为组织拥有一些个人没有的属性,这与可以定义两个用户的所有属性并且必须有空字段的单个表不同,我决定创建一个 user 表,该表具有两种类型用户之间的共同属性,然后有一列保存用户类型,因此如果其 1 则该用户是一个人,所以我必须在 individual 表中查找所有其他属性,反之亦然,individualorganization 表保存 用户外键 来识别它,这是我的数据库表的图形表示 enter image description here

如果您想知道为什么我没有制作一个表,我计划随着应用程序的增长向用户和组织表添加更多属性,留出扩展空间,所以这是我的问题,我想要一个用户的数据,我已经有了他们的 ID,但是如何检查 userType 并指向下一组属性的正确表,例如,如果一个名为 John 的用户,其 Id 为 2 并且位于单独的表中,我该如何获取他们的名字和姓氏?

我对查询的想法是这样的:

Select users.email, users.profilePhoto, users.userSince, CASE WHEN userType = 1 THEN SELECT individual.fname, individual.lname WHERE users.id = 1 AND individual.userFK = 1 END FROM users

但是我不熟悉CASE语句,所以我总是收到错误,任何愿意提供帮助的人,非常欢迎。

最佳答案

您正在尝试在 SELECT 部分中构建数据集,但 SELECT 部分仅用于更改输出,而不是输入,也不用于构建数据集。

数据集是使用 WHERE 语句结合 JOIN 交叉选择构建的。

可以使用GROUP BY完成聚合,但您现在不需要这样做。

   SELECT
u.*,
i.*,
o.*
FROM users u
LEFT JOIN individual i
ON i.userFK = u.userFK
LEFT JOIN organization o
ON o.userFK = u.userFK

关于mysql - 使用CASE的SQL查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40587182/

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