MySQL 语句未按预期返回

标签 mysql join if-statement

我有 3 张 table :

  1. 供应商: ID、姓名、地址、郊区、州、电话、电子邮件、已删除

  2. 客户: ID、姓名、地址、郊区、州、电话、电子邮件、已删除

  3. 认可的供应商: id、supplier_id、customer_id

我想显示所有供应商并“标记”那些已在 ACCREDITED_SUPPLIERS 中链接的供应商...

这是我的声明:

SELECT SQL_CALC_FOUND_ROWS s.id, s.name, s.suburb, s.state, s.phone, s.email, s.deleted, 
IF( ac.customer_id =  '220', 1, 0 ) AS accredited
FROM suppliers s 
LEFT OUTER JOIN accredited_suppliers ac ON ac.supplier_id = s.id 
WHERE s.deleted='0'  
ORDER BY s.name

此语句仅返回 10 个“标记”行

由于某种原因,它莫名其妙地丢失了 3 行!

SELECT * 
FROM  `accredited_suppliers` 
WHERE  `customer_id` =  '220'

返回:13 行

我上面的说法正确吗?我发出的信息正确吗?

最佳答案

你不只是想要:

select
  s.id AS supplier_id,
  IF(a.supplier_id IS NULL, 0, 1) AS accredited
from
  SUPPLIERS s
    left join
      ACCREDITED_SUPPLIERS a
    ON
      s.id = a.supplier_id AND
      a.customer_id = 220;

关于MySQL 语句未按预期返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693185/

相关文章:

java - ffmpeg 加入两个 mp4 视频一个接一个

ios - 我有两个 if 语句,第一个被跳过,为什么?

shell - 如何在 tcsh if 语句中使用 OR 条件

SQL查询帮助: Probably Involves Group By

mysql - 什么是正确的 MySql FULL JOIN 语法?

php - 使用准备好的语句将多个值插入到多行中 PHP、MYSQL

mysql - 如何优化或正确编写此 MYSQL 查询?

javascript - 如果语句不能正常工作

mysql - 替换 MySQL 记录?

mysql - 对值添加约束,Mysql