日期:2014-05-18  浏览次数:20552 次

高手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 ',不过这样效率是个问题吧...