我有一个问题:
SELECT * FROM wp_silumos_suvartojimas
WHERE katiline_name = 'Dukstynos mikrorajonas'
GROUP BY kainam2
ORDER BY kainam2 ASC
LIMIT 10
结果分组:
结果未分组:
更新:
按特定字段 (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/