Bạn không thể xóa trực tiếp khỏi truy vấn con, nhưng bạn vẫn có thể sử dụng nó nếu muốn, bạn chỉ cần sử dụng nó trong JOIN
:
DELETE usrs
FROM usrs
INNER JOIN (
SELECT * FROM usrs WHERE name = 'john'
) t ON usrs.Id = t.Id
Hoặc bạn có thể sử dụng IN
:
DELETE usrs
WHERE ID IN (
SELECT ID
FROM usrs
WHERE name = 'John'
)
Với điều này đã nói, đối với ví dụ này, tôi không biết tại sao bạn muốn có một truy vấn con:
DELETE usrs WHERE name = 'John'
Chỉnh sửa căn cứ vào nhận xét. Để xóa khỏi nhiều bảng cùng một lúc, bạn có thể có nhiều DELETE
hoặc bạn có thể sử dụng một cái gì đó như sau:
delete t1, t2, t3
from (select 'john' as usr) t
left join t1 on t.usr=t1.usr
left join t2 on t.usr=t2.usr
left join t3 on t.usr=t3.usr