*doc_id* と *doc_name* を持つ医師と *p_id* *doc_id* 外部キーと *p_name* を持つ患者の 2 つのテーブルがあり、doc_name='pardeep' に一致するすべてのレコードを患者から削除したいと考えています。私の質問です
DELETE FROM `doctor` , `patient` WHERE
doctor.doc_id=patient.doc_id and doctor.doc_name='pardeep';
サブクエリを使用して、IN
句 (または )だけを使用できます。=
delete from patient where doc_id in
(select doc_id from doctor where doc_name = 'pardeep');
を使用IN
すると、サブクエリが複数の結果を返すことができることを意味します (おそらく複数の doc_id)。
を使用する=
と、サブクエリが複数の結果を返すと、クエリは失敗します。
あなたはとても親しかった。最初に何を削除し、次にどのテーブルから削除するかを指定する必要があります。
DELETE Syntax
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
正しいクエリは次のようになります
DELETE p
FROM patient p JOIN doctor d
ON p.doc_id = d.doc_id
WHERE d.doc_name = 'pardeep';
これがSQLFiddleのデモです
JOIN
余談ですが、暗黙的な (coma) 構文ではなく、明示的な ANSI 構文を使用することを検討してください。