首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP & MySQL -如何从两个表中删除用户记录

问PHP & MySQL -如何从两个表中删除用户记录
EN

Stack Overflow用户
提问于 2010-10-19 23:44:45
回答 3查看 831关注 0票数 1

大家好,我是PHP & MySQL的新手,我想知道如何使用PHP & MySQL从下面这两个表中删除所有的user_id 3记录?

我的MySQL表

代码语言:javascript
复制
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)
);

美国表值

代码语言:javascript
复制
id  skill_id    user_id
9   7           3
10  8           3
11  9           3
12  10          3
13  17          6

ls表值

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2010-10-19 23:54:19

您可以获取属于user_id = 3的所有行,然后使用生成的WHERE子句构建一条DELETE语句。

但是,我想知道您是否有一个不合适的表设计,因为您在user和skill之间存在m:n关系,并且您想删除与id为3的用户相关的所有技能。但这意味着用户和技能之间存在1:m的关系(一个用户拥有多个技能,不与其他人共享这些技能)。或者我搞错了什么?

票数 2
EN

Stack Overflow用户

发布于 2010-10-19 23:49:15

可以,您可以使用多表DELETE语句,例如。

代码语言:javascript
复制
DELETE FROM ls, us USING ls
    JOIN us ON us.skill_id = ls.id
WHERE ls.user_id = 3
票数 1
EN

Stack Overflow用户

发布于 2010-10-19 23:57:15

MySQL不支持多表删除,请使用:

代码语言:javascript
复制
DELETE a, b
  FROM ls a 
  JOIN us b ON b.skill_id = a.id
 WHERE b.user_id = 3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3970143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档