Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql select语句具有唯一和最大选择数?_Php_Mysql - Fatal编程技术网

Php mysql select语句具有唯一和最大选择数?

Php mysql select语句具有唯一和最大选择数?,php,mysql,Php,Mysql,我有很多记录要插入MYSQL表“table1”。其中有些是重复的 我有一个由“字段a”和“DUP_编号”组成的复合唯一约束 因此,一组记录的示意图如下所示: ID FIELD A DUP_NUMBER 1 text1 0 2 text2 0 3 text2 1 4 text2 2 5 text3 0 再来一次,将其实际插入表中。如果可能的话,我怎么

我有很多记录要插入MYSQL表“table1”。其中有些是重复的

我有一个由“字段a”和“DUP_编号”组成的复合唯一约束

因此,一组记录的示意图如下所示:

ID     FIELD A     DUP_NUMBER 
1       text1        0
2       text2        0
3       text2        1
4       text2        2
5       text3        0
再来一次,将其实际插入表中。如果可能的话,我怎么做

我正在寻找一个mysql select语句,它将只选择字段a中唯一的条目,但添加了一个附加条件,即您将获得最高的DUP_编号

结果集应该如下所示:

ID     FIELD A     DUP_NUMBER 
1       text1        0
4       text2        2
5       text3        0
提前感谢,


账单

您可以使用此查询:

SELECT `FIELD A`, MAX(`DUP_NUMBER`) AS `DUP_NUMBER`
FROM `table1`
GROUP BY `FIELD A`

您真的需要按原样对数据进行结构化吗?似乎可以通过删除
DUP_NUMBER
列来简化它,假设重复的编号与
ID

的顺序相同,您可以使用以下查询:

SELECT `FIELD A`, MAX(`DUP_NUMBER`) AS `DUP_NUMBER`
FROM `table1`
GROUP BY `FIELD A`
您真的需要按原样对数据进行结构化吗?它看起来可以通过删除
DUP_NUMBER
列来简化,假设重复的数字与
ID

的顺序相同,请尝试以下操作

   select id , `field a` ,MAX(`DUP_NUMBER`) as dup_number  
   from table1 group by `FIELD A`
试试这个

   select id , `field a` ,MAX(`DUP_NUMBER`) as dup_number  
   from table1 group by `FIELD A`

您可以按如下方式执行:

SELECT field_a, max(dup_number) as dup
FROM table1
GROUP BY field_a
max
aggregation函数为您提供重复编号的最大值,而group by担保仅显示唯一的项目

如果您还需要知道id,可以执行以下操作

SELECT t.*
FROM table1 t INNER JOIN (
    SELECT field_a, max(dup_number) as dup
    FROM table1
    GROUP_BY dup_number
) g ON t.field_a = g.field_a AND t.dup_number = g.dup

您可以按如下方式进行操作:

SELECT field_a, max(dup_number) as dup
FROM table1
GROUP BY field_a
max
aggregation函数为您提供重复编号的最大值,而group by担保仅显示唯一的项目

如果您还需要知道id,可以执行以下操作

SELECT t.*
FROM table1 t INNER JOIN (
    SELECT field_a, max(dup_number) as dup
    FROM table1
    GROUP_BY dup_number
) g ON t.field_a = g.field_a AND t.dup_number = g.dup

谢谢你的详细解释谢谢你的详细解释