我想查询一个表中的10条记录。
条件为:
1:跟据用户地址位置,(字段地区:area = "深圳"),并优先提取是推荐的。
1:如地址位置不够,就先抽出推荐的记录来补充。(字段推荐:tj = 1)
2:如果前二条取出记录数不够10条,就按最新时间抽取出剩余记录来。(字段时间:add_time)有啥好方法没?呵。大家可以多想出几个方法哦。最好推荐个性能最佳的。呵。谢谢了!

解决方案 »

  1.   

    SELECT *
    FROM tb
    ORDER BY 
        CASE WHEN area ='深圳' THEN 0 ELSE 1 END,
        CASE WHEN tj = 1 THEN 0 ELSE 1 END,
        add_time DESC
    LIMIT 10;
      

  2.   

    select *
    from yourTable
    order by (area = '深圳') desc,TJ desc,add_time desc
    limit 10;
      

  3.   

    表记录如下:有啥好方法没?呵。大家可以多想出几个方法哦。最好推荐个性能最佳的。呵。谢谢了! 
    id   area    tj   add_time
    1    广州    1    1000000000
    2    北京    0    1000000001
    3    深圳    0    1000000002
    4    上海    0    1000000003
    ....取出的记录应该是先配对area 地区推荐,然后再次是地区。所以就继续查找推荐,加上推荐也不够的话。就按最新时间来查找出。直到找出十条记录这样查找出来的(广州用户访问的话),应该是先取出id1,然后再取出id4,id3,id2