mysql - 使用不同和/或分组依据来过滤选择

标签 mysql group-by distinct

我还有一个关于不同和/或分组依据的问题。我的表格如下:

|   art   |   ean             |   obs   |   vke   |
---------------------------------------------------
|  type    |  1234567890123   |    1    |   100   |
|  type    |  1234567890123   |    0    |   50    |
|  type    |  1234567890123   |    0    |   60    |
|  type    |  1234567890123   |    0    |   70    |

我需要查询始终选择 obs = 1 的行,并且仅选择 obs = 0 的其他行中最便宜的行。所有其他相等的 EAN 根本不应该列出。这可能吗?

所以结果应该是:

|  type    |  1234567890123   |    1    |   100   |
|  type    |  1234567890123   |    0    |   50    |

最佳答案

select art, ean, obs, vke 
from table_name
where obs = 1
union all
select art, ean, obs, min(vke) as vke
from table_name
where obs = 0
group by art, ean, obs

union两个结果,第一个是所有带有obs aquals 1的行,第二个是按art分组的所有行eanobs,其中 obs 等于 0minvke

了解更多关于union的信息和 group by .

关于mysql - 使用不同和/或分组依据来过滤选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9190565/

相关文章:

mysql - 根据第一个表中的 2 列从 2 个表中进行选择

mysql - MaxRow触发器在mysql中不起作用

mysql - 为什么我在这个 MySQL 中需要 COUNT(DISTINCT ...)?

sql - PostgreSQL:在对另一列进行排序时在单列上选择不同的值

oracle - 如何为 ID 不同的列选择唯一值?

php - 处理标签

php - 使用 Eloquent/Laravel 存储日期

python - group by 分组和平均

mysql - 关于分组 2 列的 SQL 选择查询

MySQL 查询在同一个表上有 2 个查询以匹配完全相同的值