如何查询以删除下面的视图?
+-------------------+------------+
| Order_id | Weight |
| 20 | 4 |
| 21 | 5 |
| 22 | 2 |
| 22 | 2 |
+-------------------+------------+
是这样的:
+-------------------+------------+
| Order_id | Weight |
| 20 | 4 |
| 21 | 5 |
| 22 | 2 |
| 22 | |
+-------------------+------------+
显示结果但未输入数据库时。
答案 0 :(得分:0)
好的,这是怎么做的:
SELECT
Order_id,
Weight,
if(@order_id = Order_id, '', Weight) as no_dup_weight,
@order_id := Order_id as dummy
FROM Table1
ORDER BY Order_id asc;
您基本上需要检查以前的Order_id
是否与当前相同,如果是,则输出一个空字段。
答案 1 :(得分:0)
你真的需要2排骰子吗?你不能按照http://www.mysqltutorial.org/mysql-distinct.aspx
使用DISTINCT子句或者知道什么有重复是很重要的。在这种情况下,您应该查看GROUP BY子句
答案 2 :(得分:0)
一个简单的方法是:
select DISTINCT order_id, weight from xyz
UNION
select order_id, null from xyz
group by order_id, weight
having count(*) > 1
Order by weight desc;
第一个select语句将显示所有唯一值,第二个将仅检索重复值。
在您需要的输出表中,您似乎希望显示所有非重复行和重复行的第1列值,但不显示第2列值。上面的查询将允许您这样做。