大家好,我是PHP & MySQL的新手,我想知道如何使用PHP & MySQL从下面这两个表中删除所有的user_id 3记录?
我的MySQL表
CREATE TABLE ls (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
skill VARCHAR(255) DEFAULT NULL,
experience VARCHAR(22) DEFAULT NULL,
self_grade VARCHAR(10) DEFAULT NULL,
date_created DATETIME NOT NULL,
date_updated DATETIME DEFAULT NULL,
PRIMARY KEY (id)
);
CREATE TABLE us (
id INT(13) UNSIGNED NOT NULL AUTO_INCREMENT,
skill_id INT(13) UNSIGNED NOT NULL,
user_id INT(13) UNSIGNED NOT NULL,
PRIMARY KEY (id)
);美国表值
id skill_id user_id
9 7 3
10 8 3
11 9 3
12 10 3
13 17 6ls表值
id skill experience self_grade date_created date_updated
7 html 5 years A 2010-10-19 07:11:08 2010-10-19 07:12:06
8 jquery 10 years B 2010-10-19 07:11:27 2010-10-19 07:12:06
9 css 1 year NULL 2010-10-19 07:11:38 2010-10-19 07:12:06
10 php 2 years C 2010-10-19 07:13:05 NULL
17 php 2 years C 2010-10-19 07:19:05 NULL发布于 2010-10-19 23:54:19
您可以获取属于user_id = 3的所有行,然后使用生成的WHERE子句构建一条DELETE语句。
但是,我想知道您是否有一个不合适的表设计,因为您在user和skill之间存在m:n关系,并且您想删除与id为3的用户相关的所有技能。但这意味着用户和技能之间存在1:m的关系(一个用户拥有多个技能,不与其他人共享这些技能)。或者我搞错了什么?
发布于 2010-10-19 23:49:15
可以,您可以使用多表DELETE语句,例如。
DELETE FROM ls, us USING ls
JOIN us ON us.skill_id = ls.id
WHERE ls.user_id = 3发布于 2010-10-19 23:57:15
MySQL不支持多表删除,请使用:
DELETE a, b
FROM ls a
JOIN us b ON b.skill_id = a.id
WHERE b.user_id = 3https://stackoverflow.com/questions/3970143
复制相似问题