2015-11-04 29 views
1

我似乎無法在SQLITE中使用此工作。根據連接是否存在更新列 - SQLITE

我想添加一個1,如果匹配連接存在一行或0如果不是。

我以爲代碼將增加1到那些匹配的行,而是它只是增加了一個1到一切irregardless匹配的:

update tbl1 
SET has_data = 1 
where exists(
    SELECT * 
    FROM tbl1 
    join tbl2 on tbl2.r_num = tbl1.r_num 
) 

我見過的一些例子「情況這麼我不能」不知道如何寫或者在這種情況下適用於0或1?

感謝您的幫助!

回答

0

子查詢的tbl1是表的一個獨立的實例,因此,EXISTS是真實的,如果有一些tbl1匹配任何地方

要引用原始表,只是不引入另一個表實例:

UPDATE tbl1 
SET has_data = 1 
WHERE EXISTS (SELECT * 
       FROM tbl2 
       WHERE r_num = tbl1.r_num); 

或者,這可以寫成:

UPDATE tbl1 
SET has_data = 1 
WHERE r_num IN (SELECT r_num 
       FROM tbl2); 
+0

感謝這麼多的這種解釋。 – Eric