gpt4 book ai didi

mysql - 如何在 MySQL 查询中定义目标表?

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:06 25 4
gpt4 key购买 nike

如何通过用户ID获取用户名?

假设我有 3 个这样的表,user.type holds 'e' 用于雇主,'w' 用于 worker 。

“e”表示用户名在 employer.name 中,因此“w”表示用户名在 worker.name 中。

enter image description here

employer.id 和 worker.id 是 user.id 的外键。

有没有办法通过单个查询在拥有用户 ID(我们还不知道类型)的同时获取用户名?

尽管如果这种建模有问题请告诉我。

最佳答案

直接回答你的问题,

SELECT  a.*,
IF(a.type = 'e', b.Name, c.Name) PersonName
FROM User a
LEFT JOIN Employer b
ON a.ID = b.ID
LEFT JOIN Worker c
ON a.ID = c.ID

实际上,您可以重新设计架构,只需要两个表,PersonType

类型

  • ID(PK)
  • 类型名

  • ID(PK)
  • 姓名
  • 用户类型 ID(FK)

而且你可以很容易地得到每个人的类型,

SELECT  a.*,
b.TypeName
FROM Person a
INNER JOIN Type b
ON a.UserTypeID = b.ID

要进一步了解有关联接的更多信息,请访问以下链接:


示例记录

类型

╔════╦══════════╗
║ ID ║ TYPENAME ║
╠════╬══════════╣
║ 1 ║ Employee ║
║ 2 ║ Worker ║
╚════╩══════════╝

个人

╔════╦═════════╦════════════╗
║ ID ║ NAME ║ USERTYPEID ║
╠════╬═════════╬════════════╣
║ 1 ║ Stacky ║ 2 ║
║ 2 ║ Horton ║ 1 ║
║ 3 ║ Alam Na ║ 1 ║
║ 4 ║ Aw aw ║ 2 ║
╚════╩═════════╩════════════╝

执行查询后的输出

╔════╦═════════╦════════════╦══════════╗
║ ID ║ NAME ║ USERTYPEID ║ TYPENAME ║
╠════╬═════════╬════════════╬══════════╣
║ 1 ║ Stacky ║ 2 ║ Worker ║
║ 2 ║ Horton ║ 1 ║ Employee ║
║ 3 ║ Alam Na ║ 1 ║ Employee ║
║ 4 ║ Aw aw ║ 2 ║ Worker ║
╚════╩═════════╩════════════╩══════════╝

关于mysql - 如何在 MySQL 查询中定义目标表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15405364/

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