2012-05-07 3 views
21

は、私は、MySQLでこれを試してみました:`table`から` alias`を削除します... WHERE `alias`.column` ...なぜ構文エラーですか?

DELETE FROM `contact_hostcommands_relation` AS `ContactHostCommand` WHERE (`ContactHostCommand`.`chr_id` = 999999) LIMIT 1 

そして、私はこれを取得:

#1064 - 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 'WHERE (`ContactHostCommand`.`chr_id` = 999999) LIMIT 1' at line 1 

注:は、このクエリが自動的に生成され、条件は表の別名に基づいています。

なぜこのエラーが発生しますか?

where句にテーブルエイリアスを使用する方法はありますか?

このMySQL固有のものですか?

あなたは、MySQLと DELETE句で ASを使用することはできません
+1

「AS」を付けずに試してください。ただそれを削除します。 – sp00m

+0

@ sp00m私は試しましたが、動作していません。とにかくアイデアをありがとう。 –

答えて

27

あなたはこのようにSQLを使用することができます。@Matusと@CeesTimmermanは、MySQL 5.1で動作し、MSSQLについて語っ

DELETE FROM ContactHostCommand 
USING `contact_hostcommands_relation` AS ContactHostCommand 
WHERE (ContactHostCommand.`chr_id` = 999999) 
LIMIT 1 
+0

ニース。このMySQLは特定ですか? –

+0

私はMySQLでこれを必要としていたので実際にはわかりません。私の推測では、エイリアスからのDELETEをサポートしないMySQLの回避策です。 – Sarunas

+2

for MSSQL: DELETE Con​​tactHostCommand FROM 'contact_hostcommands_relation' AS ContactHostCommand – Matus

5

DELETE FROM `contact_hostcommands_relation` WHERE (`chr_id` = 999999) LIMIT 1 
+0

それは動作します。しかし、クエリビルダーの条件を指定するためのテーブルエイリアスが必要でした。現在、私は現在のモデル名を保持する特別な変数を使用しています。モデル名はテーブル名とは異なります。同質性の問題です。 –

+3

実際、彼はすることができます。受け入れられた答えを見てください。 –

22

何.73 too:

delete <alias> from <table> <alias> where <alias>.<field>... 
関連する問題