<p><img src="https://img.php.cn/upload/article/000/000/000/173781074242774.jpg" alt="How to Select Only Rows with the Maximum Value in a Specific Column in SQL?
"></p>
<h2>SQL仅选择列中具有最大值的行</h2>
<h3>概述</h3>
<p>给定一个包含重复行的表,任务是仅选择特定列中具有最大值的行。</p>
<h3>解决方法</h3>
<p><strong>方法一:分组和聚合</strong></p>
<p>最直接的解决方法是使用<code>GROUP BY</code>子句和<code>MAX()</code>聚合函数:</p>
<pre class="brush:php;toolbar:false"><code class="language-sql">SELECT id, MAX(rev)
FROM YourTable
GROUP BY id</code></pre>
<p>这将返回每个组的组标识符(id)和最大rev值。</p>
<p><strong>方法二:自连接和过滤</strong></p>
<p>一种更高级的方法是使用id列作为连接条件,与表本身执行左连接:</p>
<pre class="brush:php;toolbar:false"><code class="language-sql">SELECT a.*
FROM YourTable a
LEFT OUTER JOIN YourTable b
ON a.id = b.id AND a.rev < b.rev
WHERE b.id IS NULL;</code></pre>
<p>这种方法首先将每一行与所有其他具有相同id的行连接起来。然后,它使用连接条件中的<code><</code>运算符删除所有rev值高于当前行的行。最后,子查询确保只返回没有匹配的更高rev值的行。</p>
<h3>总结</h3>
<p>两种方法都产生相同的结果,为每个唯一的id提供具有最大rev值的行。两种方法的选择取决于性能考虑和可读性。建议进行基准测试以确定特定数据库和数据集的最佳方法。</p>
以上是如何在SQL中只选择特定列中具有最大值的行?的详细内容。更多信息请关注PHP中文网其他相关文章!