oracle中not in或者in的使用方法
如表 user
id | number | 主健 | 主健ID |
name | varchar | 姓名 | |
pid | varchar | 父id |
user表數據
id | name | pid |
1 | 張三 | 1,2,3,5 |
2 | 李四 | 1,2,3,5 |
3 | 劉德華 | 1,2 |
查詢出所有的id不再pid里面的sql語句寫法:
錯誤方法:
sleect * from user u where id not in (u.pid)
會提示無效數字類型,
但是如果是寫成這樣就可以了:
sleect * from user u where id not in (1,2,3,4)
但是有人會說,把id改成字符串類型應該可以,
很遺憾的說也是不可以的,
因為改成字符串正確的寫法是
sleect * from user u where id not in ('1','2','3','4')
所以要解決這個問題可以在in里面嵌套select查詢語句就可以解決
如
sleect * from user u1 where id not in (select u2.pid from u2 where u2.pid=u1 .pid)
這樣就可以解決萬惡的in語句