易錯一
SELECT parent_item_id,CASE parent_item_id WHEN parent_item_id=45 THEN 1 ELSE 0 END
FROM ih_record_table_item WHERE ih_rt_id=2;
SELECT parent_item_id,CASE WHEN parent_item_id=45 THEN 1 ELSE 0 END
FROM ih_record_table_item WHERE ih_rt_id=2;
SELECT parent_item_id,CASE parent_item_id WHEN 45 THEN 1 ELSE 0 END
FROM ih_record_table_item WHERE ih_rt_id=2;
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
19 | 0 |
19 | 0 |
19 | 0 |
NULL | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
NULL | 0 |
NULL | 0 |
45 | 0 |
45 | 0 |
45 | 0 |
NULL | 0 |
45 | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
19 | 0 |
19 | 0 |
19 | 0 |
NULL | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
NULL | 0 |
NULL | 0 |
45 | 1 |
45 | 1 |
45 | 1 |
NULL | 0 |
45 | 1 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
19 | 0 |
19 | 0 |
19 | 0 |
NULL | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
24 | 0 |
NULL | 0 |
NULL | 0 |
45 | 1 |
45 | 1 |
45 | 1 |
NULL | 0 |
45 | 1 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
NULL | 0 |
- 結論
根據前面的三條語句和結果可看出第二個和第三個的結果一致的,對於第一個查詢其實是有問題的,case裏面其實對比的是一個true 和 false,此處如果寫查詢不夠謹慎,就會容易出現這樣的bug。