无法订购特定的ID

时间:2018-06-26 15:28:11

标签: mysql sql

我正在尝试按特定的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

怎么了?

2 个答案:

答案 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(...)将成为函数调用。