如何根据MySQL另一表的distinct值关联查询UserInformation表对应行
实现方案
你可以用两种常见的写法实现需求:
方案1:IN子查询写法
逻辑直观,直接把你已有的查询作为子查询匹配用户表即可:
SELECT ui.* FROM UserInformation ui WHERE ui.user_name IN ( SELECT DISTINCT log.created_by_user_name FROM ReferenceScreenResultLog log WHERE log.level = "1" )
方案2:INNER JOIN写法
如果两个表数据量较大,或者后续需要同时取referencelog表的字段,推荐用JOIN写法,部分场景下数据库优化器执行效率更高:
SELECT DISTINCT ui.* FROM UserInformation ui INNER JOIN ReferenceScreenResultLog log ON ui.user_name = log.created_by_user_name WHERE log.level = "1"
注意这里加
DISTINCT是为了避免同一个用户在referencelog表有多条level=1的记录时,返回重复的用户行,如果确定不会有重复或者允许重复可以去掉。
内容的提问来源于stack exchange,提问作者user1631306
相关产品推荐
相关产品推荐

