当前位置: 代码迷 >> Sql Server >> sql 条件查询"奇异"地方,帮解决啊该如何处理
  详细解决方案

sql 条件查询"奇异"地方,帮解决啊该如何处理

热度:40   发布时间:2016-04-27 18:05:08.0
sql 条件查询"奇异"地方,帮解决啊
SELECT sl.sid FROM modoer_coupons c LEFT JOIN modoer_subjectlink sl ON c.couponid = sl.flagid WHERE city_id IN (0,1) AND sl.flag = 'coupon' ORDER BY c.status LIMIT 1, 10

有结果

SELECT sl.sid FROM modoer_coupons c LEFT JOIN modoer_subjectlink sl ON c.couponid = sl.flagid WHERE city_id IN (0,1) AND sl.sid=732 AND sl.flag = 'coupon' ORDER BY c.status LIMIT 1, 10

没有结果

SELECT sl.sid FROM modoer_coupons c LEFT JOIN modoer_subjectlink sl ON c.couponid = sl.flagid WHERE city_id IN (0,1) AND sl.sid!=732 AND sl.flag = 'coupon' ORDER BY c.status LIMIT 1, 10

有结果

SELECT sl.sid FROM modoer_coupons c LEFT JOIN modoer_subjectlink sl ON c.couponid = sl.flagid WHERE sl.sid='731' ORDER BY c.status LIMIT 1, 10

没有结果

SELECT sl.sid FROM modoer_coupons c LEFT JOIN modoer_subjectlink sl ON c.couponid = sl.flagid WHERE sl.sid!='731' ORDER BY c.status LIMIT 1, 10

有结果
求助啊






------解决方案--------------------
SQL code
SELECT sl.sid FROM modoer_coupons c LEFT JOIN modoer_subjectlink sl ON c.couponid = sl.flagid AND sl.flag = 'coupon'WHERE city_id IN (0,1)  ORDER BY c.status LIMIT 1, 10
------解决方案--------------------
LIMIT 1, 10

是MYSQL的吧。
------解决方案--------------------
ta
id 
1
2

tb
id sid
1 555
3 732

select a.*,b.* from ta a left join tb b on a.id= b.id where b.sid=732
在left join之后
第tb的第二行(id=3)未能连接, ta作为左输入,全部保留, tb第一行右输入会有输出,第二行右输出为null
然后where
b.sid=732, 两行全被过滤, 自然没结果。

其实你的很简单,
不要加sid=732的条件,在navicat mysql客户端中, 仅取左联, 看结果, 或者然后在结果中再继续过滤 sid=732的记录,看看有没有值就是了。
  相关解决方案