mysql - 分组依据但选择确切记录(如果存在)

标签 mysql sql group-by

我有一个问题:

SELECT * FROM wp_silumos_suvartojimas 
WHERE katiline_name = 'Dukstynos mikrorajonas' 
GROUP BY kainam2 
ORDER BY kainam2 ASC 
LIMIT 10

结果分组:

enter image description here

结果未分组:

enter image description here

更新:

按特定字段 (kainam2) 对我的结果集进行分组,然后 如果组内的记录具有特定的 adresas 值,则为该组返回该记录; 如果组内没有记录具有指定的 adresas 值,则返回该组的随机记录;

如您所见,ID 为 22 和 164 的行具有相同的 kainam2 值。但在分组结果中,我只得到 1 行,我想控制哪一行。我想将它与 adresas 列相匹配:if $some_var = adresas

最佳答案

如果你想:

  • 按特定字段 (kainam2) 对结果集进行分组,以及
    • 来自组内的记录具有特定值 adresas,然后为组返回该记录;
    • 如果组内没有记录具有指定的adresas值,则为该组返回一条随机记录;

- 您可以在 MySQL 中这样做,方法是从结果集中排除所有具有指定值的记录但是在一个组中,其中存在一个记录确实具有指定的值。

像这样:

SELECT * FROM wp_silumos_suvartojimas s
WHERE s.katiline_name = 'Dukstynos mikrorajonas' and 
(s.adresas = $some_var or
 not exists
 (select 1 FROM wp_silumos_suvartojimas e 
  WHERE e.katiline_name = 'Dukstynos mikrorajonas' and
        e.kainam2 = s.kainam2 and
        e.adresas = $some_var) )
GROUP BY kainam2 
ORDER BY kainam2 ASC 
LIMIT 10

关于mysql - 分组依据但选择确切记录(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36475526/

相关文章:

mysql - ifnull 不适用于 mysql

sql - 智能数据库 - 能够识别异常值

mysql - 包含带有 auto_increment 的索引、键和注释的语句

php - 如何使用 PHP/MySQL 跟踪图像/横幅点击/查看

mysql - 使用 SQL/关系数据库存储和检索历史数据

mysql - 根据特定值对数据进行分组

mysql - 如何查找发布最多事件的人

java - 准备语句错误

group-by - 如何在 hive 中的每个组中按计数 desc 排序?

php - MySQL : search function into a aggregated column by "group by"