【问题标题】:Get position of sort by in SQL query在 SQL 查询中获取排序依据的位置
【发布时间】:2018-01-02 01:44:01
【问题描述】:

假设我的数据库中有 10 本书。当我按名称排序时,我希望第一本书的“排名”为 1。以此类推,在查询中。

我不能使用自动递增的 id。

[1] 一个

[2] 乙

[3] C

等等

我的场景是硬币,使用 Yii2。

    $coins = Coins::find()
        ->select(['id', 'name', 'icon', 'volume_24_hours', 'market_cap', 'price', 'change_24_hours', 'circulating_supply', 'abbreviation'])
        ->where(['is_fiat' => false])
        ->orWhere(['is_fiat' => null])
        ->orderBy(['volume_24_hours' => 'DESC']);

【问题讨论】:

  • 请记住,如果您使用 dataProvider 和网格视图管理结果,您可以使用相关的特殊列对序列进行编号
  • 你能澄清一下吗?我为此使用了 GridView 和 ADP,但什么是特殊列?您的意思是在 gridview 上自定义列数组以显示我自定义选择的行号?
  • 如果我正确地理解你的特殊列是一个数字序列..可以使用'yii\grid\SerialColumn'类生成等效序列..在gridview列中

标签: mysql sql yii yii2 yii2-advanced-app


【解决方案1】:

在 Oracle、Postgre 和 MSSQL 中,您可以使用某种形式的 row_number 函数。在 MySql 中,您可以在变量的帮助下emulate it

【讨论】:

    【解决方案2】:

    希望这对你有用.. (:

    SELECT  ROW_NUMBER()OVER(ORDER BY BookName ASC)  AS RowNo,
              BookName
    FROM   TableName
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多