メモの日々


2005年06月24日(金) [長年日記]

[ものわすれ] マチャミ

昼にマチャミを見かけた。が、夕方マチャミの正しい芸名を思い出せなくなって悶々とした。マチャミってことは松が付くかなとか考えていた。

[php] DB_DataObject

PEARのDB_DataObjectを使ってみた。参考にしたページをメモ。

[web] CSS

CSSをちょっと書いた。参考にしたページをメモ。

[db] 重複レコードの削除

データベースの主キーの作り方がおかしくて、同一とみなせるレコードが複数存在している状況になっていた。そこで、それらの重複レコードから余分なものを削除するSQLを実行したかったがどのようなSQLにすればいいのか分からなかった。

検索すると、同じような話が[pgsql-jp: 29392]で始まるスレッドにあった。

 itemno |  name
--------+--------------
  001   | apple
  002   | orange
  003   | strawberry
  004   | grape
  005   | water melon
  006   | orange
  007   | apple
  008   | orange
  009   | pine apple
  010   | banana
  011   | apple
--------+--------------

というテーブルにおいて

  1. nameが重複しているレコードを列挙したい
  2. 余分なレコードを削除してnameが重複しない状態にしたい

という話。[pgsql-jp: 29395]

delete from items where itemno in (
select itemno from items except
select min(itemno) from items
group by name
);

[pgsql-jp: 29401]

select distinct a.name from items a, items b
    where a.name = b.name and a.itemno != b.itemno;

という案があった。なるほど。

先の案のような感じでできそうだと思ったが、MySQL4.0系はSQLの副問い合わせをサポートしていないようでうまくいかなかった。ので、後の案を参考にして検索->削除の2段階を行うプログラムを作って対処した。

(追記)

CodeZineに重複行削除の話があったので、よく読んでないけどメモ。

やること

  • オーブンレンジ用べんり棚
  • ブラウンの安い電動歯ブラシ買う
  • 蛍光灯を捨てる