我想删除id = 142。
这两个表是:
1)user_master_activate 2)user_master表
使用union,其中两个表都有相同的列。
DELETE FROM (SELECT * FROM user_master_activate UNION SELECT * FROM user_master ) AS U WHERE (U.id = '142')
这是我正在让所有用户录制的地方
SELECT * FROM (SELECT * FROM user_master_activate UNION SELECT * FROM user_master ) AS U WHERE U.id = '142'
答案 0 :(得分:1)
您可以使用以下查询从user_master_activate
删除数据:
DELETE FROM user_master_activate WHERE id IN
(SELECT id FROM user_master_activate WHERE id = '142'
UNION
SELECT id FROM user_master WHERE id = '142')
您可以使用以下查询从user_master
删除数据:
DELETE FROM user_master WHERE id IN
(SELECT id FROM user_master_activate WHERE id = '142'
UNION
SELECT id FROM user_master WHERE id = '142')
<强> Soultion2:强> 未经测试
DELETE
FROM user_master
,user_master_activate USING user_master
INNER JOIN user_master_activate ON user_master.id = user_master_activate.id
WHERE user_master.id = '142';
答案 1 :(得分:1)
只需对delete语句进行一次查询即可实现。使用select语句它可以工作,因为它只是读取查询的结果。对于删除,它将无法工作,因为您需要指定要删除的表的名称。您使用delete语句的方式不是正确的synthax。
有关详细信息,请参阅MySQL官方文档中的Delete Synthax。
我建议您将删除作为两个命令运行:
DELETE FROM user_master_activate WHERE id='142';
DELETE FROM user_master WHERE id='142';
如果表是相关的,那么首先删除子项,然后删除父数据,否则删除顺序无关紧要。
答案 2 :(得分:1)
UNION
仅用于SELECT
语句:
http://dev.mysql.com/doc/refman/5.7/en/union.html
如果您不想使用两个单独的DELETE
语句并且这两个表是相关的,请尝试使用JOIN
语句:
答案 3 :(得分:1)
您必须创建两个单独的查询,因为您要删除多个表,
DELETE FROM user_master_activate WHERE id = '142'
DELETE FROM user_master WHERE id = '142'
但是,MySQL支持cascade delete,但您必须在引用表中配置外键。
CREATE TABLE user_master
(
id INT NOT NULL,
-- ... other columns here
PRIMARY KEY (id)
);
CREATE TABLE user_master_activate
(
id INT NOT NULL,
-- ... other columns here
FOREIGN KEY (id)
REFERENCES user_master(id)
ON DELETE CASCADE
);
你只有一个删除声明:
DELETE FROM user_master WHERE id = '142'
表user_master
中引用user_master_activate
的所有行也将被删除。