我有一张user_test_access号桌,里面放着test_iduser_id.

user_test_access表存储有权访问测试的所有用户以及创建测试的用户.

id test_creator test_id user_id
1 0 1 901
2 0 1 903
3 0 2 904
4 0 2 905
5 0 3 906
6 1 3 907
7 0 3 908

我想要一个查询,返回没有创建者的所有test_id.即test_creator=0.

预期结果:

对于特定的数据集,答案将是test_id、1和2. 不包括test_id 3的原因是因为user_id 907是它的test_creator.

我试过的是:

SELECT test_id from user_test_access WHERE id = ALL(SELECT id from user_test_access WHERE test_creator=0) 

你能帮我找出我做错了什么吗?

推荐答案

如果缺少的测试创建者是由值0编码的,则只需按test_id分组,并仅 Select 和为零的ID

select test_id 
from user_test_table
group by test_id
having sum(test_creator) = 0

Mysql相关问答推荐

过程/别名是有点长的MySQL命令的一部分吗?

MySQL连接序列

为分组记录MySQL取取值为TRUE的单行

如何合并有多行的json列

使用字符串文字与使用日期文字时的SQL行为

Golang中使用Gorm的Where条件转义字符无法正常工作的问题

实体内约束的唯一增量 ID 生成

如何本地化 MySQL 表中的实体?

仅当 SELECT 语句在 MySQL 中给出空集时才执行 UPDATE 语句

此更新查询是否有任何可能的重写选项?

MySQL 根据另一列中的值更改空值

当每组的列值发生变化时 Select 并连接行

如何替换 SELECT 查询中重复记录的列?

此插页中的X是什么> X'3C2F756C3E'

MYSQL:创建表中的索引关键字以及何时使用它

授予用户对 MySQL 中有限数量表的访问权限

phpmyadmin没有收到要导入的数据错误,如何解决?

MySQL如何为数据库中的所有表生成DDL

加快 mysql 转储和导入

获取最后一组不同的记录