gpt4 book ai didi

mysql - 从一个表中提取多行,但从相关表中仅提取一行

转载 作者:行者123 更新时间:2023-11-29 07:37:23 24 4
gpt4 key购买 nike

我目前正在尝试连接两个表,但要防止其中一个表的信息重复。

用户的表有4列,uid、name、email和status。stats表有4列,uid,date,follows,views

我希望能够做的是从统计表中提取每条记录,并且仅从用户表中提取姓名、电子邮件和状态值。下面的 SQL 存在的问题是它复制了用户表中的数据,有没有办法解决这个问题?

SELECT u.name
, u.email
, u.status
, s.date
, s.follows
, s.views
FROM users u
JOIN stats s
ON u.id = s.uid
WHERE name = :name

最佳答案

如果您不希望每个匹配的统计数据行都伴随着其匹配的用户行,那么您必须运行两个查询:

SELECT u.id, u.name, u.email, u.status FROM users u WHERE name = :name

注意 u.id 的结果,因为您将把它用作第二个查询的参数:

SELECT s.date, s.follows, s.views FROM stats s WHERE s.uid = :uid

您必须了解关系模型有效因为每个查询结果本身就是一个关系。匹配数据在每一行中返回,这就是允许 JOIN 成为代数的一部分的原因,其中结果可以用作另一个 JOIN 的操作数,或者GROUP BY,或其他一些关系操作。

你应该阅读 SQL and Relational Theory: How to Write Accurate SQL Code由 C. J. Date 提供。

关于mysql - 从一个表中提取多行,但从相关表中仅提取一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140837/

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