0

SQL に EAV テーブルがあり、通常は ID ごとに複数のレコードがあります。これらの各レコードには、「重み」と呼ばれる列に数値があり、ID ごとにレコードが重みの降順でランク付けされるように、このテーブルを並べ替えようとしています。将来、データがテーブルに入るときにデータが確実にソートされるようにするつもりなので、これは 1 回限りのプロセスになります。

SELECTまた、すべてのデータに対してこのようなことを行い、必要な方法で並べ替えてから、REPLACEコマンドを使用してテーブル内の古いデータを置き換えるための通常のプロトコルはありますか?

次のようにして、1つのIDに対してこれを実行できることを知っています。

SELECT * FROM my_table WHERE id = 'X' ORDER BY weight DESC

しかし、テーブル内の各IDに対して何らかの方法でこれを行う必要があります。これは通常どのように行われますか?

4

2 に答える 2

1

この場合、常に希望する順序でデータを返します。

SELECT * from theTable order by  id, weight desc

データを特定の順序で保存するわけではありません。(これを試しても問題ありません)。

于 2012-08-19T11:59:07.503 に答える
0

句を削除してWHEREに追加idORDER BYます。このように、結果セットは最初に で並べ替えられid、 ごとidに で並べ替えられweightます。

SELECT * FROM my_table ORDER BY id, weight DESC
于 2012-08-19T11:56:08.317 に答える