我有一张表格,其中包含我的客户列表'订单,我想显示特定客户的订单。客户可以不时订购相同的商品:
order_tb:
orderid customerid itemid price quantity orderdate
1 2 4 50.00 3 2017-08-02
1 2 10 150.00 2 2017-08-02
2 2 6 70.00 6 2017-08-05
2 2 2 30.00 5 2017-08-05
2 2 5 38.00 7 2017-08-05
5 2 10 150.00 3 2017-09-20
5 2 6 70.00 2 2017-09-20
2 2 4 50.00 4 2017-09-20
现在我使用以下select语句。这个陈述给我的结果没有错误,但问题是我不知道如何跳过显示相同的项目而不是显示空白区域?
SELECT p.itemname, tb.price, tb.quantity, tb.orderdate
FROM order_tb tb
LEFT JOIN product p ON tb.itemid = p.id
WHERE tb.customerid = 2
查询输出为:
itemname price quantity orderdate
football 50.00 3 2017-08-02
football 50.00 4 2017-09-20
helmet 150.00 2 2017-08-02
helmet 150.00 3 2017-09-20
bulb 70.00 6 2017-08-05
bulb 70.00 2 2017-09-20
bucket 30.00 5 2017-08-05
watch 38.00 7 2017-08-05
我的预期输出:
itemname price quantity orderdate
football 50.00 3 2017-08-02
50.00 4 2017-09-20
helmet 150.00 2 2017-08-02
150.00 3 2017-09-20
bulb 70.00 6 2017-08-05
70.00 2 2017-09-20
bucket 30.00 5 2017-08-05
watch 38.00 7 2017-08-05
答案 0 :(得分:0)
虽然我可以看到你来自哪里,但这通常是在表示层中完成的(无论是报告工具还是使用数据库的应用程序)
在查询本身中尝试执行此操作的成本要低得多,后者依赖于子查询或模拟LEAD / LAG函数(因为您使用的是MySQL)