【问题标题】:How to obtain desired result using SQL queries如何使用 SQL 查询获得所需的结果
【发布时间】:2016-08-02 11:50:56
【问题描述】:

我有以下名为 recordbase

的 sql 关系

+----+----------+----------+
|  id  | 观看次数 | 姓名 |
+----+----------+----------+
| 1  | 120     | abcd   |
+----+----------+----------+
| 2  | 200     | cdef    |
+----+----------+----------+
| 3  | 200     | efgh    |
+----+----------+----------+
| 4  | 100     | ghmk  |
+----+------------+----------+

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

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

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

SELECT name FROM recordbase WHERE views IN (SELECT max(views) FROM recordbase WHERE views < '$temp') $temp = views returned by above query

但这会产生问题,好像有两个条目具有相同的 views 并且是最大值,例如这里条目 2 和 3 具有相同的 views 值并且是最大值,那么输出将包括以下结果:

cdef
abcd
呸呸呸

虽然我需要以下输出:

cdef
呵呵
abcd
呜呜呜

是否有任何预定义的函数可以解决具有相同值的排序问题。? 还是我做错了,有更好的方法吗?

【问题讨论】:

  • 你为什么不用ORDER BY?很简单SELECT name FROM recordbase ORDER BY views desc
  • 我是 SQL 新手,一定会尝试
  • mysqlsql-server?它们不是一回事,语法也不总是一样的。

标签: php mysql sql-server optimization


【解决方案1】:
SELECT name FROM recordbase order by views desc,name asc;  

【讨论】:

    猜你喜欢
    • 2020-12-28
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多