首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按筛选的查询对mysql查询排序

问按筛选的查询对mysql查询排序
EN

Stack Overflow用户
提问于 2010-03-13 06:19:19
回答 2查看 1.5K关注 0票数 2

我有两个mysql查询:

代码语言:javascript
复制
$sql = "SELECT * FROM content WHERE threadName LIKE '%$filter%' ORDER BY lastUpdated desc";

和

代码语言:javascript
复制
$sql = "SELECT * FROM content ORDER BY lastUpdated desc";

最终结果是从一个特定表“content”返回所有行,但将匹配变量$filter的行放在顶部。有没有一个查询可以组合这两个查询,或者我应该使用一个连接?

............still不走运。这是我目前所拥有的:

代码语言:javascript
复制
$sql = "SELECT * FROM content WHERE threadName LIKE '%$filter%' ORDER BY lastUpdated desc UNION SELECT * FROM content WHERE threadName NOT LIKE '%$filter%' ORDER BY lastUpdated desc";

这就给出了:

代码语言:javascript
复制
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/andrew/public_html/PHP/threadDisplay.php  on line 20

尽管第一部分(在UNION之前)在单独使用时可以工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-13 06:23:03

使用CASE STATEMENT怎么样?

就像这样

代码语言:javascript
复制
SELECT  * 
FROM    content 
ORDER BY CASE 
            WHEN threadName LIKE '%$filter%' THEN 0
            ELSE 1
        END ASC,
        lastUpdated desc
票数 1
EN

Stack Overflow用户

发布于 2010-03-13 06:24:12

代码语言:javascript
复制
(SELECT *
FROM   content
WHERE  threadName LIKE '%$filter%')
UNION
(SELECT *
FROM   content
WHERE  threadName NOT LIKE '%$filter%')
ORDER BY lastUpdated desc

编辑:MySQL需要一些括号,并且需要在联合之后执行订单,抱歉忘记了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2436274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档