看板 Database 關於我們 聯絡資訊
※ 引述《jjjkkkooo (接科噎歐)》之銘言: : ※ 引述《smlboby (波比)》之銘言: : : 用自己 join 的方式作 ?! : : T-SQL(請自行翻譯) : : : select MTable.* : : from friend as MTable join friend as STable : : on MTable.friend_user_id = STable.user_id : : and MTable.user_id = STable.friend_user_id : : and MTable.user_id = 1 : 自問自答一下,我後來想到一個方法: : select * from friend where friend_user_id in : ( select user_id from friend where friend_user_id = 1) : and user_id = 1 再來自問自答順便整理一下: 假設有一 friend Table 如下 ----+--------+------- user_id | friend_user_id | friend_name ----+--------+------- 1 | 2 | 小明 1 | 3 | 小華 1 | 4 | 小三 1 | 5 | 小二 2 | 1 | 小一 3 | 5 | NULL 3 | 2 | John 3 | 1 | Mary 若是資料表設計成朋友關係非雙向,而是多一個欄位判斷是否接受邀請 那如果要設計成user_id可以為friend取名字就有點困難,我當初會把 資料表做這種設計應該是這種考量 現在考慮 user_id = 1 的使用者,那麼它有三種好友 要得到這三種好友的狀況如下(mySQL): a.對方送出邀請,自己尚未答覆好友 select * from friend where friend_user_id = 1 and user_id not in (select friend_user_id from friend where user_id = 1) b.自己送出邀請,對方尚未答覆好友 select * from friend where user_id = 1 and friend_user_id not in (select user_id from friend where friend_user_id = 1) c.得到/送出邀請,且已答覆的好友 select * from friend where user_id = 1 and friend_user_id in (select user_id from friend where friend_user_id = 1) 若有問題請不吝指教 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.210.159
jkly1846:我的情況只有AC兩種 然後個人資料在另一張表 不會放一起 06/29 16:09
menjar:在資料量大下,條件用in會不會造成效能上有問題? 07/03 08:19