gpt4 book ai didi

mysql - JOIN 多个表给出重复记录 - MySql

转载 作者:行者123 更新时间:2023-11-29 06:54:43 25 4
gpt4 key购买 nike

这是我的表格和必要列的列表

您的用户

screen_name,
country,
status

twitter_users_relationship tf。该表对于每个 screen_name 有多个 target_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_countryu.country 匹配的 target_screen_name >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条重复记录。

请告诉我需要将什么 JOINuser_targeted_countries 一起使用才能获得所需的结果。

u.country 可以与 utc.country_name 中的国家/地区不同

更新 -如果我从 WHERE 子句中删除 OR u.country=tf.target_country ,那么我将获得所有匹配的 target_screen_name 且不重复。但我不确定如何获取与 u.country=tf.target_country 匹配的所有记录?

最佳答案

取决于所需的业务逻辑..

首先,无论问题如何,您的查询都是错误的(LEFT JOIN 或条件)。使用LEFT JOIN时,右表上的条件应该onlyON子句中指定,这意味着您需要将所有条件移至tf.utc.ON 子句。

其次,您可以使用 GROUP BY 子句并选择 utc.country_name 之一(如果您想要特定的答案,如果不需要,则会有不同的答案)没关系,在此列上使用 MAX())。

关于mysql - JOIN 多个表给出重复记录 - MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46076863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com