Php 如何设置;“订购”;两个案子?
在mysql中,我需要为两种情况设置“orderby”:name或mod_1,这取决于用户在组合框中选择的内容。我的问题是:Php 如何设置;“订购”;两个案子?,php,mysql,sql-order-by,Php,Mysql,Sql Order By,在mysql中,我需要为两种情况设置“orderby”:name或mod_1,这取决于用户在组合框中选择的内容。我的问题是: SELECT name, SUM(IF(mod = 1, 1, 0)) AS mod_1, SUM(IF(mod = 2, 1, 0)) AS mod_2, SUM(IF(mod = 3, 1, 0)) AS mod_3 FROM DW_RM_Log WHERE ... ORDER BY name (or mod_1
SELECT
name,
SUM(IF(mod = 1, 1, 0)) AS mod_1,
SUM(IF(mod = 2, 1, 0)) AS mod_2,
SUM(IF(mod = 3, 1, 0)) AS mod_3
FROM
DW_RM_Log
WHERE
...
ORDER BY
name (or mod_1 DESC)
是否可以在mysql中执行此操作,或者我需要在php中编写代码?或者两者兼而有之?无聊到可以为您这样做:
$q = "SELECT
name,
SUM(IF(mod = 1, 1, 0)) AS mod_1,
SUM(IF(mod = 2, 1, 0)) AS mod_2,
SUM(IF(mod = 3, 1, 0)) AS mod_3
FROM
DW_RM_Log
WHERE
...
ORDER BY ";
if ($x) {
$q .= "name DESC";
} else {
$q .= "mod_1 DESC";
}
//run $q!
只要在php中生成一个适当的查询并运行它就可以了,但我不希望每种情况下都有两个查询…在运行时使用适当的
orderby
追加一个查询90%的查询不会改变,只需追加orderby
子句即可