如何使用SQL查询获得所需的结果

时间:2016-04-12 04:22:24

标签: php mysql sql-server optimization

我有以下名为 recordbase

的sql关系

+ ---- + ---------- + ---------- +
| id | 观看次数 | 名称 |
+ ---- + ---------- + ---------- +
| 1 | 120 | ABCD |
+ ---- + ---------- + ---------- +
| 2 | 200 | CDEF |
+ ---- + ---------- + ---------- +
| 3 | 200 | EFGH |
+ ---- + ---------- + ---------- +
| 4 | 100 | ghmk |
+ ---- + ---------- + ---------- +

现在我想按视图的降序显示结果。我使用以下查询来获取具有最大视图的条目:

SELECT name FROM recordbase WHERE views IN (SELECT max(views) FROM recordbase);

处理此SQL查询(在PHP中)后,具有最大视图的条目的 id 保存在变量$currentid中,其视图(即最大视图)存储在{{ 1}}。为了获得进一步的降序,我可以循环以下块:

$temp

但是这会产生问题,好像有两个条目具有相同的SELECT name FROM recordbase WHERE views IN (SELECT max(views) FROM recordbase WHERE views < '$temp') $temp = views returned by above query并且是最大的,例如,条目2和3具有相同的views值并且是最大值,那么输出将包括结果如下:

  

CDEF
  ABCD
  ghmk

虽然我需要以下输出:

  

CDEF
  EFGH
  ABCD
  ghmk

是否有任何预先定义的函数可以解决使用相同值对值进行排序的问题。 或者我做错了,有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

SELECT name FROM recordbase order by views desc,name asc;