2011-08-18 10 views
0

MySQLのテーブルから目的の行を削除するのが難しいです。私はかなり複雑なサブクエリを使って行を選択していますが、何らかの理由で同様の構文を使ってそれらを削除できません。SELECTできますが削除できません

delete * from table1 as t1 
where t1.col1 in 
(select y.col1 
from table2 x 
join 
    (select col1, col2 
    from table2 
    where col2 like "%- 2%") y 
on x.col2 = replace(y.col2, "- 2", "")); 

繰り返しますが、私は私が望んでいた正確な行を削除]を選択することができますが、私は削除するクエリを変更したときに、私は次のエラーを取得する:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near... 

すべてのヘルプは大歓迎です。

答えて

3

*DELETEの後に削除します。通常、個々の列を削除しないで、行全体を削除します。

+0

wow。そのような愚かな間違いに多大な時間を費やしました。皆さんありがとう! – leadingzero

1

*を削除してください。 DELETEは、動作のすべてまたは何らかの種類です。

1

無効なDELETE * FROMの代わりにDELETE FROMを試してください。

2

うん、あなたは

delete from table1 

を使用する必要がありますまたはクエリに複数のテーブルがある場合、あなたはから削除するテーブルの名前を入力する必要があります。

delete table1 from table1 inner join table2 on table1.id = table2.t1ID 
関連する問題