のMAX()値を登録しよう:MYSQLは、私は私のデータベースに牽引テーブルを持っているENUM
user_id | user_name
--------+----------
1 |jim
2 |john
user_id | status
--------+----------
1 |ONE
2 |TWO
1 |THREE
状況はそのように定義列挙型、である:これはONEであることをgaranteeすべき
status enum('ONE','TWO','THREE') NOT NULL
最も低い状態、3つは最高です。 Imは次のようにユーザーのステータスを取得する:
SELECT user_id, type, status, event_date, valid_from, valid_to
FROM status_event
WHERE user_id = 1
ORDER BY status DESC
LIMIT 1;
これは、ステータスの順序を使用していることにより、順序として期待される、状態THREEのように、私を与えます。
ここでは、すべてのユーザーとその最高ステータス値のリストを取得するためにSQLを作成します。 ImはMAX()関数が文字列としての状態値を明らかに比較していて、最大値としてTWOを返すようになっています。さらに、私はそれらにどのように参加するのか考えていない、これを行うことは可能ですか?サブクエリが必要ですか?
私が望む結果は以下の通りです: - 文字列値ではなく整数値を使用して
残念ながらuser_name| status
---------+----------
jim |THREE
john |TWO
**のように列挙型の値を作成することができます**整数**ので、順序で正しく動作します。現時点では** string **、TwoとThreeは** T **で始まります。 – user3888958
ORDER BYは正常に動作していますが、MAX()は動作していません –