我正在尝试按列值对结果进行排序,但它不起作用
$users = Comment::select([
'id',
'comment',
'user_name',
'product_id',
'rating',
'country',
'status',
'pin',
'created_at',
])->where('shop_name',$shop)->where('product_id', $id)->with('images')->orderByRaw("IF(product_url = 'customer') DESC")->orderByRaw("product_url = manually ASC")->orderBy('pin', 'desc')->orderBy('rating', 'desc')->with('pages')->get();
我添加了此代码
->orderByRaw("IF(product_url = 'customer') DESC")
我收到此错误
"SQLSTATE[42000]: 语法错误或访问冲突: 1064 您有一个 您的 SQL 语法错误;检查与您的手册相对应的手册 MySQL 服务器版本,用于在 '( DESC 附近使用的正确语法, product_url = 手动 ASC、
(pin
desc、rating
desc' 在第 1 行 (SQL: 选择id
、comment
、user_name
、product_id
、rating
、country
、status
、pin
、created_at
从comments
shop_name
= 和product_id
= 按 IF(product_url = '客户'( DESC, product_url 订购 = 手动 ASC、pin
rating
个
MySQLIF
函数接受三个参数。
此表达式无效:
IF(product_url = 'customer')
因为只向IF()
函数提供了一个参数。
我们可以这样做:
IF(product_url = 'customer',1,0)
这相当于更符合ANSI标准
CASE WHEN product_url = 'customer' THEN 1 ELSE 0 END
MySQL速记也可以工作
ORDER BY product_url = 'customer' DESC
这相当于
ORDER BY CASE
WHEN product_url = 'customer' THEN 1
WHEN product_url IS NOT NULL THEN 0
ELSE NULL
END DESC