【问题标题】:MYSQL LEFT JOIN + WHERE clause return rows with NULL resultMYSQL LEFT JOIN + WHERE 子句返回结果为 NULL 的行
【发布时间】:2017-03-28 03:30:54
【问题描述】:

我在 MYSQL 中有一个查询

 SELECT grand.user_id,grand.package_id,MAX(grand.grand_level) AS level,pam.original_title,um.name
    FROM grand_score_master AS grand
    LEFT JOIN package_master AS pam ON pam.id = grand.package_id
    LEFT JOIN user_master AS um ON um.id = grand.user_id
    WHERE grand.package_id='d47kndffqc' AND grand.user_id='CBS_00001'

因此,如果 WHERE 子句匹配,则结果符合预期。

但是当 WHERE 子句不匹配时,我希望 0 results 但 mysql 给了我

如何在 LEFT JOIN / INNER JOIN 中获得“0 个结果”。

我将在 PHP 中使用此查询来处理 AJAX 请求。

【问题讨论】:

  • 当您离开联接时,您是在说“从表 a 中取出所有列,并从表 b 中附加相关列”。任何具有与 where 匹配的 package_id 或 user_id 的内容(但与 user_master 或 package_master 匹配的任何内容都将为空。
  • 它是空结果集,还是您从数据库中获取了一些行,但所有值都为空?我建议您执行相同的查询,但使用 * 而不是字段。

标签: mysql


【解决方案1】:

尝试对 sql 使用 ISNULL 方法,对 MySQL 使用 IFNULL。

例如ISNULL(grand.user_id,0),IFNULL (grand.user_id,0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多