繁体   English   中英

SQL - 如何使用正常顺序的关键字过滤结果并将它们放在底部?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM