您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如果两个条件在子记录的不同行上匹配,则使用高级MySQL查询来获取主记录

如果两个条件在子记录的不同行上匹配,则使用高级MySQL查询来获取主记录

确实,正如AsConfused所暗示的那样,您需要使用别名对TABLE2进行两次联接

- both of these are tested

-- find t1 where it has 2 and 7 in t2

    select t1.*
    from table1 t1
    join table2 ov2 on t1.id=ov2.masterid and ov2.optionValue=2
    join table2 ov7 on t1.id=ov7.masterid and ov7.optionValue=7

-- find t1 where it has 2 and 7 in t2, and no others in t2

select t1.*, ovx.id
    from table1 t1
      join table2 ov2 on t1.id=ov2.masterid and ov2.optionValue=2
      join table2 ov7 on t1.id=ov7.masterid and ov7.optionValue=7
      LEFT OUTER JOIN table2 ovx on t1.id=ovx.masterid and ovx.optionValue not in (2,7)
    WHERE ovx.id is null
MySQL 2022/1/1 18:38:21 有400人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶