私はデータベース(mysql)に次のような文字列を持っています:
{"StateId":73,"CallTime":"\/Date(1336365498912+0500)\/","CallId":"1336365489.14157","Target":"agi://127.0.0.1"}},"Profile":{"$type":"DataWriter.DbProfile, DataWriterObjects","Name":"DataService","Provider":"mssql","ConnectionString":"Data Source=localhost\\mydb; Database=mydb; User Id=sa; Password=admin;"}}
文字列は、複数のフィールドを含むJSONオブジェクトです。問題は、データベースから削除したい重複行が複数あることです。CallIdとStateIdが同じであるが、CallTimeが異なる場合、行は重複していると見なされます。したがって、最初に、 CallIdが同じである行の重複(GROUP BY)のリストを取得し、 CallTimeの違いを無視します。以下のレコードのCallTimeは最初のレコードとは異なりますが、 CallIdは同じであるため、重複していると見なされます(基本的に、重複している場合はCallTimeを考慮する必要はありません) 。
{"StateId":73,"CallTime":"\/Date(1336365498913+0500)\/","CallId":"1336365489.14157","Target":"agi://127.0.0.1"}},"Profile":{"$type":"DataWriter.DbProfile, DataWriterObjects","Name":"DataService","Provider":"mssql","ConnectionString":"Data Source=localhost\\mydb; Database=mydb; User Id=sa; Password=admin;"}}
では、どうすればGROUP BYを実行できますか?基本的に、GROUP BYのすべては、CallTime値を無視して一致する必要があります。
テーブル構造は
mysql> describe Statements;
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| SequenceId | bigint(10) | NO | PRI | NULL | auto_increment |
| Profile | varchar(32) | YES | MUL | NULL | |
| CacheItem | text | NO | | NULL | |
+------------+-------------+------+-----+---------+----------------+
その後、重複を削除したいと思います。誰かが私を助けてくれますか?