作者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