如何使用MYSQL JOIN链接表?

问题描述 投票:0回答:1

有4张桌子。我想用当前ID链接所有表。如果查询的最后一个表中没有值,则数据不会返回。我想访问所有表中的数据。我应该如何进行呢?

我的代码:(部分工作)

SELECT 
    U.id AS id,
    U.amount AS amount,
    A.commission AS commission,
    I.power AS item_power
FROM affiliate AS A
     INNER JOIN users AS U
ON A.owner_id = U.id 
     INNER JOIN users_booster AS B
ON U.id = B.userid
     INNER JOIN auction_item AS I
ON B.item_id = I.id
    WHERE 
A.partner_id = '1947' AND 
I.type = 'reference_booster' AND
B.end_time >= NOW()
GROUP BY I.type

enter image description here

mysql sql join inner-join
1个回答
1
投票

使用left join。不需要group by

SELECT U.id AS id, U.amount AS amount, A.commission AS commission,
      I.power AS item_power
FROM affiliate A JOIN
     users U
     ON A.owner_id = U.id JOIN
     users_booster B
     ON U.id = B.userid LEFT JOIN
     auction_item I
     ON B.item_id = I.id AND I.type = 'reference_booster'
WHERE A.partner_id = 1947 AND 
      B.end_time >= NOW();

注意:

  • 即使没有匹配项,只要要保留行,都使用LEFT JOIN
  • LEFT JOINsecond表上的条件必须在ON子句中。
  • 我想象partner_id是一个数字,所以不要将其与字符串进行比较。使用1947代替'1947'。当然,如果是字符串,请保留单引号。
  • GROUP BY在没有聚合功能的情况下很少有意义。
© www.soinside.com 2019 - 2024. All rights reserved.