SELECT a.* FROM wsy_dream.ShopDistribute a INNER JOIN wsy_dream.ShopActivity b where a.Isvalid=1 and a.Acquirer_id = 138058 and FIND_IN_SET(1,b.ShopType) ORDER BY CASE a.Consumption WHEN 1 then 99 end desc,a.ID desc;上面这条sql语句,b表只有一条ShopType=1,的数据,为什么查询结果会是全部
时间: 2024-03-16 22:47:32 浏览: 115
Arm_Neon_Intrinsics_Reference_for_ACLE_Q3_ 2020WSY.rar
根据你提供的 SQL 语句,查询结果会返回 a 表中 Acquirer_id 为 138058,且 Isvalid 为 1,且 ShopType 为 1 的所有记录,因为在查询语句中使用了 INNER JOIN 来连接 a 表和 b 表,并且使用了 FIND_IN_SET 函数来判断 ShopType 是否为 1,但是没有使用 WHERE 子句来限制 b 表中只有一条 ShopType=1 的数据,因此查询结果会返回 a 表中所有符合条件的记录。如果想要限制结果只返回 b 表中 ShopType=1 的数据,则可以在查询语句中添加一个子查询,如下所示:
```
SELECT a.*
FROM wsy_dream.ShopDistribute a
INNER JOIN (
SELECT * FROM wsy_dream.ShopActivity WHERE ShopType = 1
) b ON a.Acquirer_id = b.Acquirer_id
WHERE a.Isvalid=1
ORDER BY CASE a.Consumption WHEN 1 THEN 99 END DESC, a.ID DESC;
```
这样,查询结果就只会返回 a 表中 Acquirer_id 为 138058,且 Isvalid 为 1,且 ShopType 为 1 的记录。
阅读全文