這裏是我的表的名單和必要的列JOIN多個表上給人重複的記錄 - MySQL的
用戶ü。
screen_name,
country,
status
twitter_users_relationship TF。該表格有多個target_screen_name
,每個screen_name
。
screen_name,
target_screen_name,
target_country,
follow_status
user_twitter_action_map TA
screen_name,
action_name,
action_status
user_targeted_countries UTC。這個表有多個國家的每個screen_name
screen_name,
country_name
我想從twitter_users_relationship
所有target_screen_name
具有匹配的target_country
與u.country
或utc.country_name
我的查詢到目前爲止
SELECT u.screen_name,
u.country,
tf.target_screen_name,
tf.target_country,
ta.action_name,
ta.action_status,
utc.country_name
FROM users u
LEFT JOIN twitter_users_relationship tf
ON u.screen_name=tf.screen_name
LEFT JOIN user_twitter_action_map ta
ON u.screen_name=ta.screen_name
AND ta.action_name='follow'
AND ta.action_status='active'
LEFT JOIN user_targeted_countries utc
ON u.screen_name= utc.screen_name
WHERE u.status = 'active'
AND tf.follow_status = 'pending'
AND tf.target_country != ''
AND tf.target_country IS NOT NULL
AND (utc.country_name=tf.target_country OR u.country=tf.target_country)
AND u.screen_name = 'my_screen_name';
但此查詢給我重複記錄在user_targeted_countries
國家的每個條目。如果user_targeted_countries
有3個縣,它將返回3個重複記錄。
請讓我知道什麼JOIN
我需要使用user_targeted_countries
才能得到想要的結果。
u.country
可以比國家的不同之處utc.country_name
UPDATE - 如果我從WHERE
條款刪除OR u.country=tf.target_country
然後我得到的所有匹配target_screen_name不重複。但我不知道如何獲得與u.country=tf.target_country
匹配的所有記錄?
如果JOIN中使用了一對多或多對多關係,JOIN's就會知道給出重複的結果...通常,DISTINCT將有助於刪除重複項。 –
這是正常的,還是我需要更多練習才能正確使用'JOIN'? – prograshid
@RaymondNijland由於'country_name'列可能不同,因此Distinct在這裏不起作用。 – sagi