MySQL中的复杂查询

时间:2011-06-26 16:03:28

标签: mysql sql

这是我的问题: 我有一个包含几列的表

(Id, email, last_visit_date, picture)

图片栏可以有3个选项:

  • 没有图片的用户 - > “noPic”
  • 拥有私人照片的用户 - > “privatePic”
  • 有图片的用户 - > “pic2”(“pic”& userID)

我需要一个查询(对于MySQL),它将返回顺序中的所有行:

  1. 所有带照片的用户按last_visit_date
  2. 排序
  3. 所有拥有私人照片的用户按last_visit_date
  4. 排序
  5. 所有没有图片的用户按last_visit_date命令
  6. 我无法理解

3 个答案:

答案 0 :(得分:1)

ORDER BY picture LIKE 'pic%' DESC, picture = "noPic" DESC, last_visit_date

答案 1 :(得分:0)

mysql会将bool值隐式转换为整数(分别为1和0)。因此,您可以通过比较图片值进行排序:

ORDER BY picture = 'privatePic' ASC, picture = 'noPic' ASC, last_visit_date

答案 2 :(得分:0)

在order by子句中使用case / when构造...在这种情况下,我将值设置为1,2或3,然后按上次访问日期排序...

select
      YT.*
   from
      YourTable YT
   order by
      case when YT.Picture = "noPic" then 1
           when YT.Picture = "PrivatePic" then 2
           else 3 
      end,
      YT.Last_Visit_Date desc