posts - 0,  comments - 5,  trackbacks - 0
          今天遇到一個問題,文章評論回復,由于評論和回復是二個不同的表,現(xiàn)在要根據(jù)回復時間來排序,而回復表的記錄可能存在可能不存在.

          SELECT? * from Sys_Article_Remark? sar left join `Sys_Remark_Reply` rr on sar.`id`=rr.`remarkId` where sar.`articleId`=18273? order by rr.`replyTime` desc 肯定不行..它會把所有的記錄都查尋出來,我們的評論表不能出現(xiàn)重復.

          用SELECT? distinct *? from Sys_Article_Remark? sar left join `Sys_Remark_Reply` rr on sar.`id`=rr.`remarkId` where sar.`articleId`=18273? order by rr.`replyTime` desc和上面一樣的效果.

          用SELECT *? from Sys_Article_Remark? sar left join `Sys_Remark_Reply` rr on sar.`id`=rr.`remarkId` where sar.`articleId`=18273? group by rr.`remarkId` order by rr.`replyTime` desc 根據(jù)articleId分組也不行..因為它會把回復表中不存的記錄,所有null記錄當成是一組..對distinct來說.所有null也是相同的.

          最后用SELECT *? from Sys_Article_Remark? sar left join `Sys_Remark_Reply` rr on sar.`id`=rr.`remarkId` where sar.`articleId`=18273 group by sar.id order by rr.`replyTime` desc ..根據(jù)評論id來分組.就不會出現(xiàn)評論重復了.

          distinct 表示不出現(xiàn)重復的列,group by表示按列分組.這二個的性能問題還沒認真看過.不過自己感覺group by 比 distinct 更好用.因為distinct只對單個字段有用.如果查詢多個就不行了.

          如 數(shù)據(jù)表test 中的記錄 主鍵 id 值 name

          假設有 1,a 2,b 3,c 4,b 5,c 這五條記錄.如果你只想查出a b c 用 select distinct name from test 可以做到.結(jié)果為 name a b c .如果你想把name 對應的id也查出來?用 select id,distinct name from test ?這時distinct 就沒有用了.因為id沒有重復.所以它會把所有記錄都顯示出來.

          現(xiàn)在最好用group by

          select * from test group by name 這樣就強制只顯示3條記錄了…

          posted on 2007-12-05 10:45 crazy 閱讀(989) 評論(1)  編輯  收藏 所屬分類: mysql數(shù)據(jù)庫
          主站蜘蛛池模板: 印江| 宣汉县| 旬阳县| 定陶县| 金平| 德惠市| 裕民县| 石首市| 永春县| 长乐市| 台中市| 威远县| 阳高县| 易门县| 大同市| 中牟县| 宜都市| 孟津县| 江津市| 蒙自县| 锦屏县| 吉木萨尔县| 遂平县| 威远县| 开远市| 太和县| 岳池县| 济阳县| 湘潭市| 罗甸县| 新龙县| 修水县| 西藏| 缙云县| 尚义县| 青川县| 城固县| 尖扎县| 永泰县| 乃东县| 于田县|