gpt4 book ai didi

mysql - MySQL 中需要进行连接的条件列

转载 作者:行者123 更新时间:2023-11-30 21:22:55 28 4
gpt4 key购买 nike

我在网站上研究了相关问题,但未能找到解决方案。我拥有的是 MySQL 中的用户事件表。它列出了照片社区站点内用户的所有类型的事件。根据发生的事件,我需要查询其他用户的某些数据。

我将通过两个示例以更实际的方式对其进行解释。首先,一个简单的事件,用户加入该站点。这是事件表中的行的样子:

事件:已注册
user_id: 19(用户表的外键)
日期:当前日期
image_id: null,因为这个事件与图片无关

查询这个很简单。现在是一个需要查询额外数据的事件。此事件表示用户上传了图片:

事件:图像上传
user_id: 19(用户表的外键)
日期:当前日期
image_id:12

第二个事件需要连接图像表以从该表中获取图像 URL 列。第三个事件可能是关于评论投票,我需要连接评论表以获得额外的列。

本质上,我需要一种方法来根据事件类型有条件地选择每行的额外列(而不是行)。当列来自同一个表时,这很容易做到,但我正在努力使用来自其他表的连接来做到这一点。我希望在不使用存储过程的情况下在一个条件查询中执行此操作。

这可能吗?

最佳答案

您可以根据事件类型进行连接,例如:

 select     *
from Events e
left join Image i
on e.event = 'IMAGEUPLOAD'
and e.image_id = i.id
left join comments c
on e.event = 'COMMENT'
and e.comment_id = c.id

如果有一个列在所有链接表之间共享,例如 create_date,您可以合并 以选择不是NULL 的列:

select      coalesce(i.create_date, c.create_date, ...) as create_date

关于mysql - MySQL 中需要进行连接的条件列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1872859/

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