gpt4 book ai didi

MySQL 将 3 个表连接在一起

转载 作者:行者123 更新时间:2023-11-30 01:31:15 25 4
gpt4 key购买 nike

嗨,我有下表

用户(id为主键/自增)

    id    |    alias    |    name----------------------------------1         |Joe          |Joe Anderson2         |TG           |Tegu Kuan3         |Peter        |Peter Neil4         |Nicol        |Clin Nicol

images(id为主键/自增。images.user代表users.id)

    id    |    image    |    user----------------------------------1         |125.jpg      |12         |126.jpg      |13         |127.jpg      |24         |128.jpg      |3

feed(id为主键/自增。feed.user代表users.id)

    id    |    title    |    user----------------------------------1         |-some text a-|12         |-some text b-|23         |-some text c-|34         |-some text d-|3

我想在以下条件下加入这 3 个表

  1. 输出应包含 users.alias、images.image、feed.title
  2. 四行作为 feed 表有四行(我需要 SELECT FROM feed)。
  3. 仅限同一用户的最后一张图片。例如用户 1 的 126.jpg 而不是 125.jpg
  4. feed.id 的降序排列

输出应该是这样的

   alias  |    image    |    title----------------------------------Peter     |128.jpg      |-some text d-Peter     |128.jpg      |-some text c-TG        |127.jpg      |-some text b-Joe       |126.jpg      |-some text a-

请帮我写这个查询。

最佳答案

问题在于,图像和 Feed 表都没有关于超出您显示的顺序的“最后”的良好概念。我不明白您如何以一般方式决定哪一个对给定用户有效。

您的用户 1 有图像 125.jpg 和 126.jpg。你打算保留这个计划吗?如果插入名为“some-random-image.jpg”的图像会发生什么?与你们现在生效的两个相比,它的顺序是什么?

如果图像和标题都有一个时间戳来指示生效日期,那么这是一个微不足道的问题。如果确实如此,您可以根据最新生效日期选择每一项。

在这种情况下,您可以编写一个带有两个 JOIN 和几个子选择的 SELECT 来选择给定日期的生效日期。

查询看起来像这样:

SELECT U.ID, U.ALIAS, I.IMAGE, F.TITLE
FROM USERS AS U
JOIN IMAGES AS I
ON U.ID = I.USER
JOIN FEED AS F
ON U.ID = F.USER
GROUP BY U,ID

添加 WHERE 子句以根据需要选择“最新”。

关于MySQL 将 3 个表连接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17431918/

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