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

时间:2010-06-17 19:33:13

标签: php mysql

我可以想到在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     |  ...
...

我可以为每个字段单独SELECT添加ORDER BY,然后解释结果,但这似乎是很多额外的数据库访问。

我现在的替代方法是只获取整个表格,然后使用PHP对高亮值进行排序/搜索。

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

它不漂亮,但它会完全符合您的要求:

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 

...重复其他列

答案 1 :(得分:0)

我能想到的最佳方式:

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

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