【问题标题】:How to use DB::raw() with postgres?如何将 DB::raw() 与 postgres 一起使用?
【发布时间】:2017-10-03 15:07:39
【问题描述】:

我尝试为表格设置行号,但出现这样的错误

PDOException SQLSTATE[42601]:语法错误:7 错误:语法错误 或靠近 "@" LINE 1: SET @rownum=0 ^

这是我的代码

DB::statement(DB::raw('SET @rownum=0'));
        $bill = MonthlyBill::info()
                ->billPeriod($bill_period_id)
                ->select(DB::raw("@rownum := @rownum + 1 AS row"), "monthly_bill.*", "t.*")
                ->get();

我该如何解决这个问题?

【问题讨论】:

    标签: postgresql laravel


    【解决方案1】:

    Postgres 不支持@ 变量——这是 mysql 的一个特性。您可以改用row_number() 为每一行分配一个数字:

    $bill = MonthlyBill::info()
        ->billPeriod($bill_period_id)
        ->select(DB::raw("row_number() over (order by some_column) row"), "monthly_bill.*", "t.*")
        ->get();
    

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2010-12-04
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多