簡體   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