>백엔드 개발 >PHP 튜토리얼 >请教一个查询

请教一个查询

WBOY
WBOY원래의
2016-06-23 13:46:28815검색

表里有三个字段  id,create_at,status  【id 为编号,自增  ,create_at 为创建时间  ,status 为状态】

我想做的是 先按 状态升序排序, 当状态值为  2 时,按create_at 降序,状态值为 3 时按create_at 升序。

网上搜索 过,看到了case when 的写法。 自己尝试过,没整出来,还请各位高手帮忙,非常感谢。


回复讨论(解决方案)

可以把查询的order 写成一个变量  根据status去给order 赋值

可以把查询的order 写成一个变量  根据status去给order 赋值



那么问题来了,究竟是怎么写叱?


可以把查询的order 写成一个变量  根据status去给order 赋值



那么问题来了,究竟是怎么写叱?


就是拼接where条件  



可以把查询的order 写成一个变量  根据status去给order 赋值



那么问题来了,究竟是怎么写叱?
就是拼接where条件  


一 非常感谢你。
二 希望你以后在帮助人的时候,可以给出更具体方法。 我自己感觉这个例子,字段已准备得足够简单的。
谈处理方法 ,我自己也了解一些,有时候,就是一些语法,等q/a 问题卡住了,希望有更直接的帮助。
三 刚才自己把这个问题给折腾出来了。我是这样解决的。

SELECT *  FROM table_name 
ORDER BY STATUS ASC, CASE STATUS WHEN 2 THEN create_at ELSE -create_at END DESC;

.... order by status, case when status=2 then create_at end desc, case when  status=3 then create_at end

我喜欢这样写
.... order by status, if(status=2,create_at,‘’) desc, if(status=3,create_at,‘’)

.... order by status, case when status=2 then create_at end desc, case when  status=3 then create_at end

我喜欢这样写
.... order by status, if(status=2,create_at,‘’) desc, if(status=3,create_at,‘’)



非常感谢 ,很有收获。
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.