mysql - 在一个查询中使用删除和选择子句

标签 mysql

我有三张 table 。


circle
id   name 
1     first
2     two
3     three
4     four

user_circle

user_id  circle_id  user_type_id
1        1          1
1        2          1
1        3          1
1        4          2
2        2          2


user_type

id  type
1   admin
2   member

我想删除 user_id =1 且 user_type_id =1 且该圈子中用户数为 1 的圈子。我怎样才能在一个查询中做到这一点?

我需要一个将从表中删除以下圆圈的结果。

circle_id
1
3

最佳答案

首先选择只有一个用户的circle_id。然后,您必须创建一个子查询并为其指定别名,因为您无法更新刚刚从中选择的表。最后,使用 DELETE 并应用您需要的所有 WHERE 条件。

DELETE FROM users WHERE circle_id IN (
  SELECT * FROM (
    SELECT circle_id FROM users GROUP BY circle_id HAVING (COUNT(user_id)=1)
    ) AS u
)
AND user_id = 1 AND user_type_id = 1

关于mysql - 在一个查询中使用删除和选择子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29985394/

相关文章:

php - 德行 2 更改语言 native

mysql - 防止 MySQL 重复插入多个值时自动递增

php - PHP 是否有一个函数可以将 MySQL 表编码为 XML,例如......?

mysql - 为什么 sql.Open() 不应该返回 nil 作为错误?

PHP 数组 : Contents from result set

php - 删除mysql查询中的冗余

php - 上传文件后未获取正确的路径

mysql - 无法创建连接 : Invalid connection details. 请验证您输入了正确的连接详细信息

php - 是否可以使用 Propel2 进行全文(匹配)查询?

mysql - 如何在 Ruby 的 MySql2 中打印数据库中所有表的名称?