2011-05-04 57 views
0

我明白,在沒有任何工作要顯示的情況下提出問題有點粗魯,但是我有點難倒,需要一些幫助。如果字段匹配,則更新並刪除

我需要從一個MySQL表中刪除行,如果在另一個表中的另一個領域是等於1

我有兩個表table_1table_2

table_1有兩個字段locationevents

並且table_2具有被稱爲location的字段,其與location相同table_1

我想刪除table_2一行或多行,如果場location相同table_1events = 1

類似:

if `events` = 1 in `table_1` in 'location' `*`; 
    delete row(s) from `table_2` 
    where `location` is the same as `location` in `table_1` 
+0

讓一個SELECT(處理結果),然後一個DELETE查詢太簡單了? – Shoe 2011-05-04 09:45:25

回答

1
DELETE t2 
    FROM `table2` t2 
    JOIN `table1` t1 ON t1.events = 1 
        AND t1.location = t2.location 
+0

t1正在殺我我理解這個概念,但是t1.location也給我一個錯誤。即時t1和t2是字段。 – trey 2011-05-04 10:14:49

+0

@trey:沒有它的table1和table2的別名。 – 2011-05-04 10:16:01

+0

t1.location正在被解釋爲一列。 ...#1054 - 'on子句'中的未知列't1.location' – trey 2011-05-04 10:18:18

3

試試這個:

delete from `table_2` 
    where location in (select location from `table_1` where events=1) 

編輯

DELETE t2 FROM `table_2` t2 
    JOIN `table_1` t1 ON t1.location = t2.location where t1.events=1 
+0

phpmyadmin不接受這種格式的兄弟。我嘗試了幾次 – trey 2011-05-04 10:01:42

+0

@trey:在PHP中不太瞭解。但它會給出任何錯誤?此問題與PHP或我的查詢有關? – 2011-05-04 10:06:52

+0

它不接受括號內的任何內容(從'table_1'中選擇事件= 1的位置) – trey 2011-05-04 10:08:31

相關問題