作者grassboy2 (天才小胖子-活力花俏草兒)
看板Database
標題Re: [SQL ] 有辦法找到沒被JOIN到的資料嗎?
時間Sun Apr 29 16:38:29 2007
NOT IN好像也是一個方法…
SELECT `mails`.* FROM `mails`
WHERE `mails`.`index` NOT IN (SELECT `index` FROM `accounts`)
不過NOT IN (SELECT ... )的效率會不會又比LEFT JOIN低呢@@a
因為降子看起來…
如果`mails`有 n 筆的話…那不就多出n個sub query了嗎?
還是說我的想法一開始就有誤了@@a
剛才又想到一招…
SELECT `left_table`.`index` FROM (
SELECT DISTINCT `index` FORM `mails`
) AS `left_table`
LEFT JOIN `accounts` ON `left_table`.`index` = `accounts`.`index`
WHERE `accounts`.`index` IS NULL
這樣每種`index`只會取出一種…也能找到miss掉的index
感覺又可以節省一點時間…
不過…不知道還有沒有別種比較快的方法厚@@a
※ 引述《PsMonkey (人生第一個第一名)》之銘言:
: 其實我不是很懂問題點在哪裡 @__@
: 用 not in 的方式
: 然後 select 兩次(如果你用的是可以 sub-query 的 MySQL)
: 應該就沒問題了吧?
: 有錯請狠鞭 [遞皮鞭]
: ※ 引述《grassboy2 (天才小胖子-活力花俏草兒)》之銘言:
: : 那…如果在操作資料庫時…
: : 有辦法把那些無法inner join到的mail資料給取出來嗎?
: : 畢竟要取得出來後…
: : 才能決定看是要刪除那些mail還是重建那個損毀的account吧@@a
: : 可是這個問題困擾了好幾天…
: : 目前只能想到說用left join的方式去取出account為NULL的資料…
: : 但…如果mail的資料量一大…left join又是極傷時間資源的作業…
: : 那麼…還有什麼方法可以取出那些miss link的資料嗎?
: : 啊啊~不知道這種問題要怎麼下關鍵字google了><~
: : 求求板上的大大們幫幫忙吧m(_ _)m
--
╔作者 grassboy2 來自 ptt.cc 的怒吼!
█ ◎P_GrassboyWebBBS版【http://WebGrassboy.twbbs.org】
Design By Grassboy@MDS 白日夢工作室 ╚─你現在還以為,瀏覽器不能打逼嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.206.39