【发布时间】:2016-03-31 18:09:15
【问题描述】:
我有 2 个表 A 和 B,它们都有相同的数据,因为表 B 也有一个“包含”列。
如果包含为 1 的表 B 中存在相同的 A.user_id + A.code 组合,我想选择表 a 中的所有 a.code 和 a.user_id 条目,那么我不想返回这些表 A 中的值。
首先我尝试用这个来修复它:
SELECT a.code, a.user_id
LEFT JOIN B ON a.code = b.code
FROM A a WHERE b.include != 1
这不起作用,因为代码字段在表 B 中多次存在,所以我得到了很多结果。
最终我想出了这个,但我不确定这是否是最好的解决方案,甚至是正确的。
SELECT a.code, a.user_id
FROM A a WHERE CONCAT(code, '-', user_id)
IN (SELECT CONCAT(code, '-', user_id) FROM b WHERE include != 1
非常感谢任何帮助!
【问题讨论】:
-
左连接不起作用
-
你需要记录表B中可用的代码
-
你在表 B 中有多条记录,你不需要它们只需要一条记录吗?
-
这里的左连接不起作用,因为它乘以我在表B中多次使用相同代码时返回的结果量。我只需要知道是否存在相同的记录组合代码 + user_id 和 include = 1
-
我不明白为什么您的第一个查询不起作用...您是否尝试过使用
SELECT DISTINCT(a.code, a.user_id)或类似的东西来删除重复项?
标签: mysql select subquery where-in