とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

cake焼きました(18)

「find時にDISTINCTじゃなくてGROUP BYで重複を排除したい場合」
まずはSQLでの重複排除した検索は初めてなので、素でSQL文を発行してみる。

SELECT DISTINCT key FROM titles ORDER BY created ASC


っと、ここまで来たところで、DISTINCTではなくGROUP BYを使って重複を除けばいいとのご指摘。
まったくです。。


なので、GROUP BYで特定のカラム重複を排除する場合の方法です。

    function getNewItems()
    {
          param = array(
                        'order'      => array('created desc'),
                        'group'      => array('key'),
                        'limit'      => 20);
        return $this->find('all', $param);
    }

gropuっていうパラメータが用意されてたのですね〜
GROUP BY程度なら超簡単にできてしまいました。



参考:http://f32.aaa.livedoor.jp/~azusa/index.php?t=mysql&p=select#a_distinct
参考:http://www.syuhari.jp/blog/archives/54
参考:http://d.hatena.ne.jp/cakephper/20080920