Php 如何在获取非重复条目时查询重复条目?

Php 如何在获取非重复条目时查询重复条目?,php,mysql,Php,Mysql,我有一张这样的桌子 我试图弄清楚如何在仍然获取非重复条目的情况下只查询其中一个重复条目 $query = "SELECT id, size, color FROM `".$item."` WHERE size in (SELECT size FROM `".$item."` GROUP BY size HAVING COUNT(*)>1)"; $resul = $conn->query ($query); if($resul->num_rows

我有一张这样的桌子

我试图弄清楚如何在仍然获取非重复条目的情况下只查询其中一个重复条目

$query = "SELECT id, size, color FROM `".$item."` WHERE size in (SELECT size FROM `".$item."`
                GROUP BY size HAVING COUNT(*)>1)";
$resul = $conn->query ($query);
if($resul->num_rows > 0){
    while($r = $resul->fetch_assoc()){
        echo $r["size"];
    }
}

这将为每个大小选择id最大的行:

SELECT t1.id, t1.size, t1.color 
FROM yourTable t1
LEFT JOIN yourTable t2
  ON t1.id < t2.id
 and t1.size = t2.size
WHERE t2.id IS NULL   // if no one is bigger than you, you are the biggest.

您可以这样查询:

SELECT size, color, quantity FROM `yourtable` group by size
但是,它将显示与Small相关的第一行,如下所示:


向我们展示数据库模式、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。尝试创建一个示例,您希望从复制的行中选择哪一行?最低/较高id?最大数量?警告:这有一些严重问题,因为用户数据在查询中使用。尽可能使用事先准备好的陈述。当使用时,这些操作非常简单,其中任何用户提供的数据都指定有
:name
指示符,该指示符随后使用
bind_param
execute
填充,具体取决于您使用的指示符。永远不要将
$\u POST
$\u GET
或任何用户数据直接放入查询中。是的,我仍然必须切换所有内容以使用准备好的语句。当我运行此操作时,不会返回任何内容。第一部分?还是整个查询?再次检查。筛选器的大小不是id
SELECT size, color, quantity FROM `yourtable` group by size