gpt4 book ai didi

mysql - 选择与一项关联的多项

转载 作者:行者123 更新时间:2023-11-29 06:12:01 25 4
gpt4 key购买 nike

我觉得有更好的方法来做到这一点。我主要只是问我所做的是否正确,或者是否有更好的方法。

观察这些表格:

Users
id | name
---+---------
1 | Andrew
2 | Greg

Images
id | userid | url
---+--------+-------
1 | 1 | img/foo.jpg
2 | 2 | img/bar.jpg
3 | 2 | img/baz.jpg
4 | 1 | img/qux.jpg

如果“用户”表具有引用图像的单个外键,则每个用户只能与单个图像关联。但是,我希望允许每个用户与任意数量的图像关联,因此将用户外键放在图像中。

如果用户对存储在另一个表中的数据有一个外键,我了解如何使用 JOIN。但是,在本例中,还有另一个表,其中包含与我感兴趣的用户关联的多个外键。我将如何构建一个 SELECT 查询来检索与该用户关联的所有图像以及所有图像在一个 SELECT 查询中与用户关联的数据(用户类型、电话号码、等等[我已经知道如何做到这一点])?

或者,有更好的方法吗?

编辑1:

例如,如果您选择 id = 1 的用户,那么它将返回第一行用户以及第一行和最后一行图像(因为这些行的 userid = 1)。

最佳答案

如果您不希望多行包含相同的(用户)数据,您可以对每个用户进行分组,并使用 GROUP_CONCAT() 函数将所有网址收集在一列中:

SELECT u.*
, GROUP_CONCAT(i.URL)
FROM users u
LEFT JOIN Images i
ON u.ID = i.userID
WHERE u.ID = 1
GROUP BY u.ID

或使用 2 个查询:

SELECT u.*
FROM users u
WHERE u.ID = 1

SELECT i.URL
FROM Images i
WHERE i.userID = 1

关于mysql - 选择与一项关联的多项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8643338/

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