首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-02-22 
sql 条件查询奇异地方,帮解决啊SELECT sl.sid FROM modoer_coupons c LEFT JOIN modoer_subjectlink sl

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的记录,看看有没有值就是了。

热点排行