[英]How to delete one row from a table and multiple rows on another that are related?
[英]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
成为代数的一部分,在此结果可以用作另一个JOIN
或GROUP BY
或其他关系操作的操作数。
您应该阅读SQL和关系理论:如何按CJ Date 编写准确的SQL代码 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.