【发布时间】:2011-04-02 19:56:52
【问题描述】:
我正在努力实现以下目标:
我有一个 ORDER BY 语句,它可能会根据 A 列中存储的值而有所不同。
例如:
如果类型是成员,则按成员姓氏排序 如果类型是组,则按组名排序
都按升序排列。
我对最终陈述的最佳猜测是:
SELECT *
FROM table
WHERE STATUS = 'Active'
ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC
我知道这是不正确的,但在其他地方找不到信息。有什么想法吗?
【问题讨论】:
-
那么您的查询是否有可能同时返回这两种类型?如果不是,您不会说每种类型有两个不同的查询,那么很容易为每个类型创建一个 order by 子句。
-
@iznogood - 如果提前知道类型或排序(考虑按名称字母排序),我们会这样做,但这在这种特殊情况下似乎不起作用。例如: $query = "SELECT * FROM table WHERE STATUS = 'Active' AND ((LNAME LIKE 'A%' AND PARTY = 'Member') OR (GROUPNAME LIKE 'A%' AND PARTY = 'Group')) ORDER通过 KDATE ASC";确实有效}
-
@JM4:您是否已将
KDATE列更改为更合适的列类型(例如DATE或DATETIME)? -
@ircmaxell - 我在一些新表上做了,并且正在将旧表迁移到新格式。主要问题是监控“实时”站点和数据库,并找出修改 PHP 脚本以及数据库结构的最佳方法,而不会弄乱每天需要 400 次注册的站点。
-
@JM4:进步是最重要的。罗马不是一天建成的。我很高兴听到至少事情正在朝着更好的方向发展......