[英]SQL - How do I filter results with keyword out of normal order and place them at bottom?
我有一个用PHP重建的网站,可以从Access数据库中读取。 我有大部分功能可以根据选择下拉列表中的类别来显示产品列表。 但是,我想做的一件事是将所有过时的产品移到结果列表的底部。 目前,它们在显示的结果中混合。
是否有允许我这样做的SQL语句? 目前,数据库中的所有过时产品都在其产品名称的末尾附加了“(已过时)”。 我希望我可以将字符串(Obsolete)作为目标。
这是我当前的SQL语句:
$handle = odbc_connect("Potter","","");
$results = odbc_exec($handle, "SELECT DISTINCT product.prodimage,
product.prodmodelno,
product.proddesc,
product.prodorder,
product.prodpdf,
product.prodmanual,
product.prodtip
FROM product
WHERE (( ( product.prodmodelno ) LIKE '%$searchTerm%' ))
OR (( ( product.proddesc ) LIKE '%$searchTerm%' ))
ORDER BY product.prodorder DESC,
product.prodmodelno ASC ");
您需要使用IIF
语句进行ORDER
(这类似于ANSI SQL中的CASE
)
http://www.techonthenet.com/access/functions/advanced/iif.php
所以你可以排序(未经测试):
IIF (RIGHT(product.[proddesc],10) = "(Obsolete)", "b", "a")
这会创建一个新的派生列,当过时时为“b”,否则为“a”....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.