select t.*from talk twhere t.user_id = 2Unionselect t.*from talk t, user_contact cwhere c.user_id = 2 and c.contact_type = 1 and c.be_user_id = t.user_id這么寫(xiě)可以但是不想這么寫(xiě) ,想用 內(nèi)連接或者左連接存在一種情況就是這個(gè)user在user_contact 表里面沒(méi)數(shù)據(jù),代表他沒(méi)關(guān)注任何人user_id = 1 是用戶(hù)的id,也就是我的idselect t.*
from talk t left join user_contact c on c.user_id = t.user_id
where t.user_id = 1 or (c.user_id = 1 and c.be_user_id = t.user_id and c.contact_type = 1)搞不明白哪里有錯(cuò)啊,為啥就會(huì)有重復(fù)數(shù)據(jù)呢我這樣寫(xiě)查詢(xún)出來(lái)有重復(fù)數(shù)據(jù)user_contact是用戶(hù)關(guān)系表talk 是帖子表帖子表talk有存發(fā)布帖子的用戶(hù)的user_id然后用戶(hù)關(guān)系表user_contact 存了 user_id,be_user_id是被關(guān)注的用戶(hù)的id,contact_typ_type是用戶(hù)關(guān)系類(lèi)型,1為關(guān)注類(lèi)型求教,不知道該怎么寫(xiě)了
1 回答

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
select * from talk where user_id=1 or user_id in (select be_user_id from user_contact where user_id=1 and contact_type = 1)