繁体   English   中英

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

[英]Pull multiple rows from one table but only one row from a related table

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

用户表具有4列,即uid,名称,电子邮件和状态。 stats表有4列,uid,日期,关注,视图

我想做的是从stats表中提取所有记录,而从user表中仅提取名称,电子邮件和状态值。 我在下面的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成为代数的一部分,在此结果可以用作另一个JOINGROUP BY或其他关系操作的操作数。

您应该阅读SQL和关系理论:如何按CJ Date 编写准确的SQL代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM