mysql - 检查表中是否存在数据,然后在单独的表中进行比较

标签 mysql sql

我有两个表:玩家和成就。

玩家表中有玩家姓名字段,成就表也有玩家姓名字段。

因此两个表上的名称相同。

我清除了一些不活跃的玩家并删除了他们的数据。现在的问题是,由于我没有使用外键,所以我的成就表中有很多无用的数据,当我删除玩家表中的数据时,成就表中的数据没有被删除,并且成就表中有无用的数据.

我需要的是,如果成就表中的行不存在于玩家表中,则该查询将删除这些行。

因此,如果玩家的名字出现在成就表中,但不在玩家表中,则成就表中的数据将被删除。

我该怎么做?

最佳答案

我需要的是,如果成就表中的行不存在于玩家表中,则该查询将删除这些行。

使用 join 的一个版本

delete t1
 from Achivemntes t1
left join
players t2
on t1.id=t2.id
where t2.id is null

关于mysql - 检查表中是否存在数据,然后在单独的表中进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36183777/

相关文章:

Java SpringMVC访问MySQL数据库的方法

mysql - 使用子字符串函数的结果计算多列的值

mysql - 搜索//从具有 2 列的数据库中选择 * laravel//

c# - MySQL 查询永远运行,有什么问题?

mysql - 检索具有多个关联条目的行

Mysql2::Error: Expression #2 of ORDER BY 子句不在 GROUP BY 子句中并且包含非聚合列

mysql - Directus ER_ACCESS_DENIED_ERROR : Access denied for user 'root' @'localhost' (using password: YES)

mysql - 这个 SQL 重复行是怎么发生的?

MySQL查找多个子集的模式

java - 我们如何使用 java sql 将数组传递给 IN 参数并从 OUT 参数检索数组