使用具有另一个表的条件查询表

时间:2015-07-18 19:28:20

标签: sql sql-server tsql join

很难为此做一个好头衔(随意编辑),但希望它会更有意义..
说我有以下表格:

t1:

i1    v1
_________
1     bob
2     NULL
3     sam
4     NULL
5     kenny
5     NULL

t2:

i2     v2        item
______________
1      bob       prod_1
2      nick      prod_2
3      sam       prod_3
4      jj        prod_4
5      kenny     prod_5
5      cartman   prod_6

我需要在t2.i2 = t1.i1上加入表格,但仅限于t2.v2中不存在t1.v1的地方。所以我试图得到以下结果:

目标:

i2    v2      item
__________________
2     nick       prod_2
4     jj         prod_4
5     cartman    prod_6  

下面的查询是我的第一次尝试,但是它无效,所以我正在尝试使用JOIN找到一个更有效的解决方案。

SELECT * FROM t2
WHERE v2 NOT IN (
    SELECT v1 FROM t1 WHERE t2.i2 = t1.i1
)

4 个答案:

答案 0 :(得分:2)

您的查询没问题,但我会使用NOT EXISTS

SELECT dm2.*
FROM web.delete_me2 dm2
WHERE NOT EXISTS (SELECT 1 
                  FROM web.delete_me1 dm1 
                  WHERE dm2.some_int2 = dm1.some_int1 and dm2.some_var2 = dm1.some_var1
                 );

虽然您可以将其写为join,但此版本至少应该是性能良好的。您需要web.delete_me1(some_int1, some_var1)上的索引。

答案 1 :(得分:0)

import shutil
import os
import urllib

myFile = open('unformatted.txt','r')
newFile = open("formatted.json", "w")

newFile.write('{'+'\n'+'list: {'+'\n')

for line in myFile:
    newFile.write() // this is where I'm not sure what to write

newFile.write('}'+'\n'+'}')

myFile.close()
newFile.close()

或试试这个

SELECT DISTINCT T1.*, T2.* 
  FROM T1 
  JOIN T2
    ON T1.ID = T2.ID
  LEFT JOIN T2 AS T2NO 
    ON T2NO.NAME = T1.NAME 
 WHERE T2NO.NAME IS NULL 

答案 2 :(得分:0)

<translate android:fromXDelta="-80%" android:toXDelta="0%" android:fromYDelta="2000%" android:toYDelta="0%" android:duration="800" /> 应该足够了

LEFT JOIN

答案 3 :(得分:0)

您是否需要t2 i2所在的t1v2中的所有记录? 如果是这样,您可以编写此查询

select * from t2 
where i2 in (select i1 from t1)
and v2 not in (select v1 from t1 where v1 is not null)

not in根据需要开展工作,v1不应该null