我可以想到在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对高亮值进行排序/搜索。
有更好的方法吗?
答案 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++;
}