【问题标题】:Return specific row and desc order in sql in php在php中的sql中返回特定的行和desc顺序
【发布时间】:2023-03-09 16:48:01
【问题描述】:

我希望我的查询返回表的特定行,其中列首先包含特定值并带有年份描述。

如果我有这样的桌子

表员工

 id  - Name    -    Year - Status 
  1  - Ashish  -    2016 - Old
  2  - Srisan  -    2017 - New
  3  - Mohit   -    2018 - New
  4  - Ram     -    2015 - Old
  5  - Boby    -    2016 - New

那么结果应该是

 id -  Name   -  Year - Status 
  3 -  Mohit  -  2018 - New
  2 -  Srisan -  2017 - New
  5 -  Boby   -  2016 - New
  1 -  Ashish -  2016 - Old
  4 -  Ram    -  2015 - Old

Status 是新的并按年份的 desc 排序

【问题讨论】:

  • 你尝试了什么?
  • ORDER BY status = 'new' DESC,或参见 FIELD()

标签: php mysql sql phpmyadmin


【解决方案1】:

FIELD(Status)Year排序

SELECT id, Name, Year, Status 
FROM myTable
ORDER BY FIELD(Status, 'New', 'Old'), Year DESC

【讨论】:

    【解决方案2】:

    你可以试试下面-

    select * from tablename
    order by case when 'New' then 0 else 1 end, year desc
    

    【讨论】:

    • 我不知道谁在这里投了反对票?如果有任何问题,您应该解释投票背后的原因 - 否则任何人都可以纠正他的错误 - 至少 SO 用户应该有一些方式
    【解决方案3】:

    对于您问题中提到的预期结果,查询将是

    SELECT * FROM employee  ORDER BY Status ASC, Year DESC;
    

    它包含所有行,但如果您想要特定的行,则必须根据您所需的条件使用下面提到的 Where 子句。

    SELECT Name FROM employee where Year=2018 ORDER BY Year DESC;
    

    【讨论】:

    • 问题是先按status 排序,然后是年份。 :-)
    猜你喜欢
    • 2015-07-22
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    相关资源
    最近更新 更多