2017-04-06 88 views
0

我有一個表是這樣的:MySQL的左連接上的列表

id | val1 | val2 
---------------- 
1 | 100 | 200 
2 | 200 | 100 
3 | 150 | 250 

我從API獲取列表,如:

((1, 100, 200), 
(2, 200, 101), 
(3, 150, 250)) 

從列表我從表中得到同樣的數據,在那裏我可以看到id 2的列val2已經從100更改爲101.

什麼樣的MySQL查詢將返回列表的第二行?也就是說,其中一個值的行發生了更改。

它應該測試val1和val2列。

回答

1

您可以使用in()運營商具有多個字段的一個列表:

select * from table 
where (id, val1, val2) not in ((1, 100, 200), 
           (2, 200, 101), 
           (3, 150, 250)) 
+0

謝謝您的回答。查詢返回id = 2,val1 = 200,val2 = 100。有沒有辦法返回id = 2,val1 = 200,val2 = 101? –

+0

那麼,有一種方法可以在MySQL中執行此操作,但如果您在基於ID的應用程序層中執行此操作,則可能會更容易。爲了使它在sql中工作,必須將API列表中的數據插入到臨時表中,或者通過按行拆分API列表來組裝一個派生表,並使用一系列'union'將它們組合在一起。 – Shadow