社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

如何用MYSQL连接表?

Jack Nal • 5 年前 • 1658 次点击  

有四张桌子。我想用当前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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54965
 
1658 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Gordon Linoff
Reply   •   1 楼
Gordon Linoff    5 年前

使用 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 无论何时你想保留行,即使没有匹配。
  • 第二 中的表 左连接 需要在 ON 条款。
  • partner_id 是一个数字,所以不要将其与字符串进行比较。使用 1947 而不是 '1947' . 当然,如果是字符串,请保留单引号。
  • GROUP BY 在没有聚合函数的情况下很少有意义。