最近碰到一个sql语句在不同端执行结果不同的诡异问题,后台编写了一条多表联查的sql语句,执行结果为5条记录。然而放到手机端执行,发现结果只有一条记录。经过语句拆分,一部分一部分排除原因,发现原因在
select count (a.numebr)......
FROM TABLE_A a
LEFT JOIN TABLE_B...
LEFT JOIN TABLE_C...
WHERE ...
和
select count (numebr)......
FROM TABLE_A a
LEFT JOIN TABLE_B...
LEFT JOIN TABLE_C...
WHERE ...
的区别。
在SQLite2中两中写法是一样的,实际上统计到的是left join的那张表,但在SQLite3中两者是有区别的。
所以SQLite版本问题和写法上的区别导致了这个诡异的问题,故记之。