4

私はこのクエリを使用して、得票数に応じてすべての名前にランクを割り当てていましたが、エラーが返されます:

1248-すべての派生テーブルには独自のエイリアスが必要です

これが私のコードです:

SELECT @rownum:=@rownum+1 AS rank, name, vote 
FROM table, (SELECT @rownum:=0) ORDER BY vote DESC

これにクエリを変更すると:-

SELECT @rownum:=@rownum+1 AS rank, name, vote 
FROM table ORDER BY vote DESC

クエリの期待どおりのランクがNULLとして取得されます。何か助け、そもそもランクを取得する方法は?

注:私は代替の解決策を探していません。クエリ自体でそれを実行しようとしています。

4

1 に答える 1

6

エラーはかなり明らかです。すべての派生テーブルには、独自のエイリアスが必要です。(SELECT @rownum := 0)次のようにエイリアスする必要があります。

SELECT 
  @rownum := @rownum + 1 AS rank, 
  name,
  vote 
FROM table, (SELECT @rownum := 0) t --This what you were missing an alias
ORDER BY vote DESC

SQLフィドルデモ

于 2012-11-03T12:45:04.993 に答える