2017-09-02 33 views
0

私は検索しましたが、私のインスタンスではうまくいかないソリューションが見つかりませんでした。mySQL - 内部結合を持つテーブル内の行を削除する

2つのテーブルを持つmySQL db。表bの結果を使用して、削除される表aの行を識別します。

このクエリを実行すると、テーブルaの結果が返されます。

SELECT a.* FROM forteweb_vhatest.siteind_frm_item_metas a 
INNER JOIN (
      SELECT item_id FROM forteweb_vhatest.siteind_frm_item_metas 
      WHERE field_id = 122 
      AND ExpiryDate < now() 
      )b ON a.item_id = b.item_id ; 

私は

DELETE a.* FROM forteweb_vhatest.siteind_frm_item_metas a 
INNER JOIN (
      SELECT item_id FROM forteweb_vhatest.siteind_frm_item_metas 
      WHERE field_id = 122 
      AND ExpiryDate < now() 
      )b ON a.item_id = b.item_id ; 

でこれらのレコードを削除しようとすると、私はあなたがなぜ私を伝えることができ、エラーを取得しますか?

ありがとうございます。

+0

1. '。*'を削除します。 – Strawberry

答えて

0
SELECT a.* FROM forteweb_vhatest.siteind_frm_item_metas a 
INNER JOIN (
     SELECT item_id FROM forteweb_vhatest.siteind_frm_item_metas 
     WHERE field_id = 122 
     AND ExpiryDate < now() 
     )b ON a.item_id = b.item_id ; 
DELETE後

/*追加されたテーブルの別名*/

DELETE a FROM forteweb_vhatest.siteind_frm_item_metas a 
    INNER JOIN (
      SELECT item_id FROM forteweb_vhatest.siteind_frm_item_metas 
      WHERE field_id = 122 
      AND ExpiryDate < now() 
      )b ON a.item_id = b.item_id ; 
+0

こんにちは。それは正しく見えますが、MySQL Workbenchでエラーが発生します。 'エラーコード:1064.あなたはSQL構文にエラーがあります。 'INNER JOIN(SELECT item_id FROM forteweb_vhatest.siteind_frm_item_met' in line 1 )の近くで使用する正しい構文については、MySQLサーバのバージョンに対応するマニュアルをチェックしてください。 –

+0

あなたの選択をコピーしました。あなたは2番目のテーブルに "b"というエイリアシングを使っていますが、クエリでテーブル名を使用していないことがわかります –

+0

Raviありがとう、次はCRONでスケジュールします。私たちは行く!:)乾杯。 –

0

deletedeleteキーワードの後に​​引数を受け付けませんので、あなたはdeleteの文からa.*を削除する必要があります。

テーブル名の後に指定されたクエリから返されたすべてを削除します。テーブル名の後に何も指定しないと、すべてのレコードが削除されます。

deleteの文hereの構文を確認できます。

これはあなたの疑問を明確にします:

+0

Deleteはキーワードの後ろに引数を受け入れます。ちょうど*その*の引数 – Strawberry

+0

ああ..ああ。 [this site](https://www.techonthenet.com/mysql/delete.php)からオンラインで読むだけですが、これに応じて3つの引数を受け取ります。そしてコードクエリでは、 'a。*'で何を期待していますか? –

+0

おそらくここに何か他のことが起こっているでしょう。この単純なコマンドでも失敗します。 'DELETE FROM forteweb_vhatest.siteind_frm_item_metas a WHERE a.item_id = 28161;' cPanelでこのユーザの特権をチェックしており、すべての特権を持っています。 –

関連する問題