1

私はテーブルを持っています

scores(user, score)

そして私はこのクエリを持っています

SET @row_num = 0; 
SELECT @row_num := @row_num + 1 as row_index, user, score 
FROM scores ORDER BY score DESC

ここで、このクエリ結果から、名前が「john」でスコアが「1400」のユーザーを選択して、row_indexが次のようになっていることを確認します。

SELECT row_index 
FROM *result* WHERE user='john' AND score=1400

それ、どうやったら出来るの?私は試した

SET @row_num = 0; 
SELECT row_index 
FROM (SELECT @row_num := @row_num + 1 as row_index, user, score 
      FROM scores ORDER BY score DESC)      
WHERE user='john' AND score=1400`

しかし、phpMyAdminは言います

#1248 - Every derived table must have its own alias

どうやってやるの?

ありがとう、アレッサンドロ

4

4 に答える 4

2

派生テーブルにエイリアスを追加していません。

SELECT row_index FROM (...) AS alias
WHERE alias.user = 'john' AND alias.score = 1400
于 2013-01-08T17:06:53.590 に答える
2

クエリ:

SET @row_num = 0; 
SELECT a.row_index 
FROM (SELECT @row_num := @row_num + 1 as row_index, 
             user, 
             score 
             FROM scores ) a
WHERE a.user='john' AND a.score=1400
ORDER BY a.score DESC

サブクエリでの順序付けは常に許可されているとは限りません。

于 2013-01-08T17:10:51.660 に答える
1

ビューを使用してみてください。

SET @row_num = 0; 
CREATE VIEW v AS SELECT @row_num := @row_num + 1 as row_index, user, score FROM scores ORDER BY score DESC;
SELECT row_index FROM v;
于 2013-01-08T17:10:51.497 に答える
1

これを試して:

SET @row_num = 0; 

SELECT row_index FROM (SELECT @row_num := @row_num + 1 as row_index, user, 
score FROM scores ORDER BY score DESC) AS alias1 WHERE user='john' AND score=1400
于 2013-01-08T17:31:39.220 に答える