4
說我有一個表刪除特定行,所有值匹配
SELECT * INTO MyTable FROM (
VALUES ('col1_a', 'col2_a', 'col3_a', 'coln_a'),
('col1_b', 'col2_b', 'col3_b', 'coln_b'),
('col1_c', 'col2_c', 'col3_c', 'coln_c')
) t (col1, col2, col3, coln)
我只想刪除與每一個列值相匹配的行我的具體(考慮行高度相似只有一個或兩列不同)
我當然可以寫
DELETE MyTable WHERE col1='col1_a' AND col2='col2_a' AND col3='col3_a' AND coln='coln_a'
DELETE MyTable WHERE col1='col1_b' AND col2='col2_b' AND col3='col3_b' AND coln='coln_b'
但是那太煩人了。我想知道是否可以通過簡單列出值來方便地編寫它?我試過這個
DELETE MyTable FROM (
VALUES ('col1_a', 'col2_a', 'col3_a', 'coln_a'),
('col1_b', 'col2_b', 'col3_b', 'coln_b')
) t (col1, col2, col3, coln)
但這只是刪除了MyTable中的所有行,請幫忙。
感謝。我認爲你的方法和我一樣,但加入。任何原因,爲什麼我沒有加入沒有工作? – user1589188
由於'DELETE'的目標是'MyTable',並且沒有條件將'MyTable'與't'鏈接,所以'MyTable'的所有行都被刪除。 –
此外,當在DELETE語句中將一個錶鏈接到另一個表時,這些表必須位於FROM或JOIN中。但是,'DELETE'語句的目標是在'DELETE'關鍵字之後的表。 –