mySQL View 显示不同的值及其下面的所有相关行

标签 mysql join subquery

我正在使用 mySQL。我有一张根据我们的 sku 每天更新的表格。 SKU 具有重复值,因为存在与其关联的定价层。我需要创建一个 View ,该 View 将显示所有行,但仅显示 1 个 sku 及其下方的关联 sku 行,以便我可以每天导出以在 magento 中进行更新。 Magento 不允许在导入过程中出现重复的 sku。这是一个例子:

sku _tier_price_qty _tier_price_price 013964223286 10 1 50 1 100 1 9332153001025 5 1 25 1 50 1 9332153001032 5 1 25 1 50 1 9332153001063 5 1 25 1 50 1 9332153001049 5 1 25 1 50 1 640420002569 5 1 25 1 50 1 640420002538 5 1 25 1 50 1 640420002521 5 1 25 1 50 1

最佳答案

尽管这种类型的格式可能更适合在报告应用程序中处理,但此查询应该执行您想要的操作:

select 
    case when x.tier_qty is not null then t.sku else null end tier_qty, 
    t.tier_qty, 
    t.tier_price
from t
left join (
    select sku, min(tier_qty) tier_qty
    from t
    group by sku
) x on t.sku = x.sku and t.tier_qty = x.tier_qty
order by t.sku, t.tier_qty;

http://www.sqlfiddle.com/#!9/3314bd/1

关于mySQL View 显示不同的值及其下面的所有相关行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31642828/

相关文章:

php - 这些 Mysql 外键是否也分配了索引

php - Laravel - 加入具有复合主键的表

sql - 从具有另一个表外键的表中删除重复行?

mysql - 有人可以改进这个查询吗?

php - 轻量级的PHP REST API

php - PDOStatement 类的对象无法转换为字符串(帮助)

mysql - 如何从 OSM 数据库正确获取位置?

MYSQL - 如何通过使用特定顺序然后 ASC 来进行排序以获得未识别的值

使用 Left Join 和Where IN 子句的 MYSQL 查询

sql - 在没有子查询的 MySQL 中,优先于 GROUP BY 的 ORDER BY