1》Linux系统下,mysql运行此SQL语句会得到空结果(红色部分为SQL不同处):
select t.s_id
from t_product_info t
where t.s_id = 425 and not exists (select 1 from t_saleout_detail where bill_id=240 and prod_id=425);
运行结果:
+------+
| s_id |
+------+
| 425 |
同类型的SQL:
select t.s_id
from t_product_info t
where t.s_id = 425 and not exists (select 1 from t_saleout_detail where bill_id=240 and prod_id=t.s_id);
运行结果:
Empty set (0.00 sec)
这是个很奇怪的问题。两个SQL的唯一区别是, 一个是子查询赋与实际的值(prod_id=425),另一个是引用原查询的值(prod_id=t.s_id) . 在WINDOWS下,两种SQL是等效的,但在LINUX下,mysql子查询不能引用原查询的字段。 先记录这个问题吧,如果有高人知道原因,还请详解。