我有 3 张 table :
供应商: ID、姓名、地址、郊区、州、电话、电子邮件、已删除
客户: ID、姓名、地址、郊区、州、电话、电子邮件、已删除
认可的供应商: 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/