我正在尝试按特定的role_id
顺序对结果进行排序,所以:
$query = "SELECT p.*
FROM player_career cr
LEFT JOIN player p ON p.id = cr.player_id
WHERE team_id = :team_id AND season_id = :season_id
ORDER BY p.role_id (1, 2, 3, 4)";
我得到:
Syntax error or access violation: 1305 FUNCTION p.role_id does not exist
怎么了?
答案 0 :(得分:5)
您正试图调用一个不存在的函数p.role_id (1, 2, 3, 4)
。真的很难掌握应该做什么(1,2,3,4),尽管ORDER BY
的默认顺序是递增的,所以只需省略(1,2,3,4)
。
答案 1 :(得分:0)
如果您需要基于role_id
对行进行排序,只需使用:
$query = "SELECT p.*
FROM player_career cr
LEFT JOIN player p ON p.id = cr.player_id
WHERE team_id = :team_id AND season_id = :season_id
ORDER BY p.role_id";
默认的订单行为正在上升,因此1
将在2
之前排序。如果要反向输出,请使用降序:ORDER BY p.role_id DESC
。
如果您需要过滤角色ID以仅获取您作为条件指定的角色ID,请在WHERE
中应用它,但请记住有关IN
运算符的信息:
WHERE team_id = :team_id AND season_id = :season_id AND p.role_id IN (1,2,3,4)
在SQL中,您调用一个函数并在括号中指定其参数,这意味着p.role_id(...)
将成为函数调用。