Php 突出显示sql结果集中的数据值

Php 突出显示sql结果集中的数据值,php,mysql,Php,Mysql,我可以想出很多用PHP甚至JavaScript实现的方法,但我想知道是否有一种基于SQL的技术我忽略了 我有一个数据库表,比如说20个字段X 10行。我想在网页上显示整个表,所以我会执行类似于SELCT*FROM data_table;,然后使用HTML表格标记格式化结果集 但是,我还想根据表中的值是其列中的最大值还是最小值来突出显示这些值。例如,我会在每列的最大值周围添加粗体标记。结果表可能如下所示,带有粗体标记: id | field1 | field2 | field3 |

我可以想出很多用PHP甚至JavaScript实现的方法,但我想知道是否有一种基于SQL的技术我忽略了

我有一个数据库表,比如说20个字段X 10行。我想在网页上显示整个表,所以我会执行类似于SELCT*FROM data_table;,然后使用HTML表格标记格式化结果集

但是,我还想根据表中的值是其列中的最大值还是最小值来突出显示这些值。例如,我会在每列的最大值周围添加粗体标记。结果表可能如下所示,带有粗体标记:

id |  field1  |  field2  |  field3  |  ...
0  |    5     |    2     | <b>7</b> |  ...
1  |    3     | <b>8</b> |    6     |  ...
2  | <b>9</b> |    5     |    1     |  ...
...
我可以为每个字段单独选择一个orderby,然后解释结果,但这似乎需要很多额外的DB访问

我现在的选择是只获取整个表,然后使用PHP对突出显示值进行排序/搜索


有更好的办法吗?

我能想到的最好办法是:

$rowCount = 0;
$colorOne = '#ffffff';
$colorTwo = '#f3f3f3';

while($row = mysql_fetch_array($result)){
        $rowColor = ($rowCount % 2) ? $colorOne : $colorTwo; 
        echo "<tag bgcolor='$rowColor'></tag>";
$rowCount++;
}

这并不漂亮,但它会完全满足你的要求:

SELECT
    (CASE field1
        WHEN (SELECT MAX(field1) FROM data_table)
        THEN CONCAT('<b>',field1,'</b>')
        ELSE field1
    END) as field1,
    (CASE field2
        WHEN (SELECT MAX(field2) FROM data_table)
        THEN CONCAT('<b>',field2,'</b>')
        ELSE field2
    END) as field2
FROM data_table 

…对其他专栏重复

有趣,谢谢。我没有考虑过这种类型的查询,但它看起来很好,而且肯定避免了多次查询。在SQL中做这类事情有意义吗?在PHP中对其进行后期处理吗?我认为这取决于数据的数量和复杂性。如果您的数据是直截了当的,例如一个表中的所有数据,那么不管数据量如何,SQL都可能是最快的选择,至少在相关表正确索引的情况下是如此。但是,如果数据很复杂,那么像这样带有多个子查询的SQL查询很容易会花费很长时间才能完成。然后,您可能希望使用SQL来降低复杂性,然后在单独的进程中处理数据。我自己从来没有使用SQL添加HTML标记,但那只是我。。。