高手999````一個SQL查詢難點
有兩個表 表a和表b 現在我想去掉表a 中表b有的數據行(意思就表a与表b哪條數據完全一樣就把牠去掉` )``再select出一個新表a
Oracle的MINUS集合能做到```但我用的是T—SQL
已知兩表結構完全相同
6個字段請用abcdef代之
最好能用一條SQL語句實現``因為要在winForm中去填充到表裡
可用存儲過程做```
高手99999
------解决方案--------------------where a.a=b.a and a.b=b.b and a.c=b.c and a.d=b.d and a.e=b.e and a.f=b.f
如果a.a和b.a都為null``其他字段相同```那么這條數據還select出嗎``?
-------------------------
不行.因为 null 不等于 null
如果不考虑效率的话,可以先把null换成 ' '
如:
where isnull(a.a, ' ')=isnull(b.a, ' ') and isnull(a.b, ' ')=isnull(b.b, ' ') and isnull(a.c, ' ')=isnull(b.c, ' ') and isnull(a.d, ' ')=isnull(b.d, ' ') and isnull(a.e, ' ')=isnull(b.e, ' ') and isnull(a.f, ' ')=isnull(b.f, ' ')
这样转有可能出现的问题是,如果你的a.a是 null 而 b.a是 ' ' ,这个条件会认为是相同的.如果把 ' '替换成不用的东西的话,如 'asdfasgafas ',不过这样效率是个问题吧...