Mysql 选择不同的行并应用筛选器
谁能帮我搬一下这张桌子吗Mysql 选择不同的行并应用筛选器,mysql,sql,distinct,Mysql,Sql,Distinct,谁能帮我搬一下这张桌子吗 col1 col2 0 1 0 1 1 0 1 1 2 0 2 1 3 1 3 1 () 我想从第一列中选择不同的值,并过滤掉第二列中有零的值。结果应该是以下列表:[0,3]听起来您在寻找这样的查询: select distinct col1 from test where col1 not in (select col1 from test where c
col1 col2
0 1
0 1
1 0
1 1
2 0
2 1
3 1
3 1
()
我想从第一列中选择不同的值,并过滤掉第二列中有零的值。结果应该是以下列表:[0,3]听起来您在寻找这样的查询:
select distinct col1 from test where
col1 not in (select col1 from test where col2 = 0)
SELECT DISTINCT `col1`
FROM `test`
WHERE `col1` NOT IN (
SELECT `col1`
FROM `test`
WHERE `col2` = 0)
SELECT DISTINCT a.`col1`
FROM `test` a
LEFT JOIN `test` b ON a.`col1` = b.`col1` AND b.`col2` = 0
WHERE b.`col1` IS NULL
或者使用连接
,如下所示:
SELECT DISTINCT `col1`
FROM `test`
WHERE `col1` NOT IN (
SELECT `col1`
FROM `test`
WHERE `col2` = 0)
SELECT DISTINCT a.`col1`
FROM `test` a
LEFT JOIN `test` b ON a.`col1` = b.`col1` AND b.`col2` = 0
WHERE b.`col1` IS NULL
选择col1
从测试
根据col1分组
具有min(col2)0的
测试:
如果col2的值低于0,则可以使用:
select col1
from test
group by col1
having group_concat(col2) not like '%,0%'
and group_concat(col2) not like '%0,%'
and group_concat(col2) <> '0'
选择col1
从测试
根据col1分组
组_concat(col2)与“%”,0%”不同
组_concat(col2)与“%0,%”不同
组_concat(col2)'0'
您似乎没有主键。这是关系表的问题。我简化了StackOverflow的表结构。感谢您的快速响应!我给你“接受答案”是因为你是最快的:-)那么col2=-1呢?您可能需要添加和max(col2)0他的数据显示该列中的所有0和1。是的,它确实依赖于它实际上是表中数据的代表。但是,如果该数据代表了他表中的数据,那么它的执行计划比他选择的答案更清晰,因为它不使用子查询。