Mysql 我可以使用什么SQL查询来选择只有0个产品的用户?
我正在插入一个包含大量数据的CSV文件,格式与下面的屏幕截图类似 我当前正在尝试创建一个SQL查询,该查询将选择具有以下属性的所有用户:Mysql 我可以使用什么SQL查询来选择只有0个产品的用户?,mysql,sql,database,data-analysis,Mysql,Sql,Database,Data Analysis,我正在插入一个包含大量数据的CSV文件,格式与下面的屏幕截图类似 我当前正在尝试创建一个SQL查询,该查询将选择具有以下属性的所有用户: “数据”列(E列)中的0 “最小”列中的0(F列) “金额”列中的1(G列) 对于该用户的每一行,上述三项都必须为真。 因此,如果查询是在下面的数据上运行的,则只会选择“Steven Jones”而不是“Alice Baker”,因为“Steven Jones”是他所有的行都有我要查找的0,0,1的唯一用户 SQL数据库由一个具有以下字段名的表组成 有人能
- “数据”列(E列)中的0
- “最小”列中的0(F列)
- “金额”列中的1(G列)
- 对于该用户的每一行,上述三项都必须为真。
使用
拥有和分组依据:
select userId
from table t
group by userId
having min(data) = 0 and max(data) = 0 and
min(`min`) = 0 and max(`min`) = 0 and
min(amt) = 1 and max(amt) = 1;
如果我理解正确的话,我们试图找到一组人,他们没有数据为非零、min为非零、amt为非1的行
所以
每次运行sum(data)=0和sum(min
)=0会比运行min/max快吗?它应该是=0而不是=9,但我不能提交编辑,因为它只有1个字符:DPerfect,太简单了!:(@franglais…我修复了代码。至于sum()
与min()
和max()
的比较。假设值总是非负的,那么求和就行了。额外的聚合函数应该有最小的开销,除了count(distinct)之外
。没有考虑过负面因素,狡猾
SELECT DISTINCT(userid)
FROM mytable t1
WHERE NOT EXISTS(
SELECT 1
FROM mytable t2
WHERE t1.userid = t2.userid
AND t2.data != 0
AND t2.min != 0
AND t2.AMT != 1
)