Re: [SQL ] 有辦法找到沒被JOIN到的資料嗎?

看板Database作者 (天才小胖子-活力花俏草兒)時間18年前 (2007/04/29 16:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
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
文章代碼(AID): #16D5c8s8 (Database)
文章代碼(AID): #16D5c8s8 (Database)