一尘不染

根据满足的条件对行进行排序?

sql

我有一个非常简单的问题:是否可以根据满足的条件对检索到的行进行排序?例如,我有一个人桌,我想检索所有名称以“ I”开头,以“ ster”结尾或包含“
lo”的人,并根据满足这些条件的顺序对其进行排序。首先是与第一个条件匹配的行,然后是与第二个条件匹配的行,依此类推。( 不重复:
如果某行满足第一个条件,则在第二个条件下不应再次显示该行)

编辑: 我使用Visual C#,并且使用MS Access管理数据库。(如果重要,文件格式为.mdb)

谢谢=)


阅读 248

收藏
2021-03-08

共1个答案

一尘不染

这样的事情应该起作用:

SELECT * FROM people
ORDER BY
  CASE WHEN name LIKE "I%" THEN 0
    WHEN name LIKE "%ster" THEN 1
    WHEN name LIKE "%lo%" THEN 2
 ELSE 3
 END ASC;

在Access中,您可能必须诉诸嵌套IIF()s:

ORDER BY
  IIF( name LIKE "I%",     0,
  IIF( name LIKE "%ster%", 1,
  IIF( name LIKE "%lo%",   2,
    3
  ) ) ) ASC
2021-03-08