繁体   English   中英

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

[英]PHP & MySQL - How to delete a users records from two tables

您好我是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          6

ls表值

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

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

但是,我想知道你是否有一个不合适的表设计,因为你有:n用户和技能之间的关系,你想要删除id为3的用户与之相关的所有技能。 但这意味着用户和技能之间存在1:m的关系(1个用户拥有多种技能,而不是与他人分享技能)。 或许我得错了什么......?

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

DELETE FROM ls, us USING ls
    JOIN us ON us.skill_id = ls.id
WHERE ls.user_id = 3

MySQL确实支持多表删除,使用:

DELETE a, b
  FROM ls a 
  JOIN us b ON b.skill_id = a.id
 WHERE b.user_id = 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM