如何仅过滤在一列中更改但在接下来的两列中相同的行?

时间:2015-05-22 16:47:51

标签: mysql

当字段和代码重复且ID发生变化时,我想拥有所有for。 字段的值应为“position”

MyTable
ID     field        code
9990    position    2434
3275    position    2434
3604    position    2434
2436    position    2434
6547    stage       wip
6547    position    5247
3604    type        CAR

Outcome:
ID     field        code
9990    position    2434
3275    position    2434
3604    position    2434
2436    position    2434

1 个答案:

答案 0 :(得分:1)

如果我理解你想用字段查询所有行,而代码有多个ID。(我假设ID是一个自动增量字段)。

下一个查询将检索字段和代码具有多个元组的所有行

SELECT field,code,COUNT(field) AS `number_of_distinct_IDs`
  FROM MyTable
 GROUP BY field,code
 HAVING COUNT(field)>1;

使用上一个查询的结果,你可以过滤你的表,这样做(有很多方法)你可以创建一个时态表来存储这些值,或者可以使用派生表,它依赖于你的要求和您的数据量。我会选择第二个。

查询如下所示:

SELECT ID,pivot.field,pivot.code 
  FROM MyTable AS pivot
  JOIN 
  (
      SELECT field,code
         FROM MyTable
       GROUP BY field,code
         HAVING COUNT(field)>1
  ) AS Filter USING(field,code);

我希望这个答案可以帮到你

此致