有人可以告诉我如何创建一个SQL查询,选择所有行中至少有4列中的1列与前面的行不同。我想要与GROUP一样,然后影响多个列。当我使用时:
SELECT * FROM TABLE GROUP BY col1, col2, col3, col4
我没有得到我想要的结果,因为列是彼此分组的
col1 col2 col3 col4
1 2 2 4
1 2 2 3 <-- different -> select
1 2 3 2 <-- different -> select
1 2 3 2 <-- don't select
2 2 3 4 <-- different -> select
我不希望1 2 3 2列2次,并根据第5列确定哪一个首选
- 编辑 -
示例数据SQLfiddle:http://sqlfiddle.com/#!2/efd92e 在此示例中,我希望返回这些行
insert into tablename VALUES ("T", 12, 1000, 0, 500, 20.25); (4)*
insert into tablename VALUES ("H", 12, 150, 2500, 100, 45); (0)*
insert into tablename VALUES ("H", 12, 100, 2500, 100, 45); (2)*
*如果可能的话,我也想知道未选择的行数,因为它们是“重复的”。
我试图根据其中一个但没有成功来编写查询
- 澄清 -
提前感谢您的帮助
答案 0 :(得分:0)
像这样的东西
SELECT * FROM TABLENAME WHERE ID NOT IN
(SELECT t1.ID FROM tablename t1 JOIN tablename t2 ON t1.ID=t2.ID+1
AND t1.col1=t2.col1 AND t1.col2=t2.col2 AND t1.col3=t2.col3
AND t1.col4=t2.col4 AND t1.col5=t2.col5 AND t1.col6=t2.col6)
假设自动增加ID。
说明:
加入表格本身,但行“更高”,所以它获取id,其中t1的行与t2中的“next”行相同。然后它选择表中的所有行,不包括那些行以前的操作。