MySQLテーブルには5つのフィールドしかありませんが、数百の行があります。良いアドバイス(tks Lacoz)で、重複した行を無視してテーブルを複製し、複製された行を含まない新しいテーブルを作成しました。
問題:新しいテーブルがスクランブルされた順序で入力されました(つまり、と呼ばれる最初のフィールドを観察するときrel_id
)。これは現実の世界では問題ではありませんが、この時点では、同じ順序で並べておくと便利です(過去のメモなどを参照する場合)。
行の例:(これrel_id
は自動インクリメントの主キーフィールドであることに注意してください)
'rel_id' => 1
'host' => 17
'host_type' => 'client'
'rep' => 7
'rep_type => 'cli_mgr'
ユーザーLacozが、重複することなく新しいテーブルを作成するのを手伝ってくれた方法は次のとおりです。
mysql_query("create table rels2 like rels");
mysql_query("alter table rels2 add unique index(host,host_type,rep,rep_type)");
mysql_query("insert IGNORE into rels2 select * from rels");
次のように、最後のクエリに「ORDERBY」を追加してみました。
mysql_query("insert IGNORE into rels2 select * from rels ORDER BY rel_id");
しかし、それは問題を解決しませんでした。行はまだスクランブルされた順序です。
最初の質問:なぜこれが起こったのですか?
2番目の質問:データが正しい順序で入力されたことをどのように確認できますか?
必要な結果:さまざまな理由で、データを以前の外観に戻す必要があります(ただし、重複はありません)。これを達成するために、誰かが別のアプローチ、さらにはphpスクリプトを提案できますか?
PS:グーグルで何度か検索した後、テーブルの生データを並べ替えることはできず、出力だけを並べ替えることができると思います。正しい?(概念と用語の両方の初心者がいつどこかから始めなければならないかを確認するのは難しいです)。