【问题标题】:How to perform left join so every record from left table will be fetched irrespective of where condition on right table [duplicate]如何执行左连接,以便从左表中获取每条记录,而不管右表上的条件如何[重复]
【发布时间】:2021-01-24 18:05:53
【问题描述】:

基本上我正在尝试获取存储在数据库中pages 表中的页面的详细信息。

我想从page 表中获取所有记录,并从pages_commission 表中获取具有user_id 16 的记录。

我尝试过的查询

SELECT pages.*, IFNULL(pc.commission, 0) AS commission FROM `pages` LEFT JOIN `pages_commission` AS pc ON pages.page_id=pc.page_id WHERE pc.user_id=16

但我的行数为零。

表结构:

  1. pages

  1. pages_commission

数据库:MySql

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    WHERE 正在将连接转换为内部连接。将常量条件移至ON 子句:

    SELECT p.*, COALESCE(pc.commission, 0) AS commission
    FROM `pages` p LEFT JOIN
         `pages_commission`pc
         ON p.page_id = pc.page_id AND pc.user_id = 16;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 2013-09-13
      • 2011-04-29
      • 2015-10-28
      • 2019-01-16
      • 2015-10-30
      • 2010-12-02
      相关资源
      最近更新 更多