想象一下下面的表格:
Table A:
x, y
Table B:
a, b
要查找匹配项,我们将执行以下查询:
SELECT A.x, B.a FROM A, B WHERE A.y = B.b
但是,Table B
将包含重复本身,因此相同的value
将与Table A
中的值(唯一)匹配多次如何避免这种情况?
已修改:如果在单个查询中无法执行上述操作,则另一个可接受的答案是在Table B
忽略Table A
中查找所有重复项并删除所有重复项除外对于一个。
根据请求编辑2 :
Table A
col, 'hi'
col, 'bye'
col, 'lol'
col, 'teehee'
col, 'example'
Table B
col, 'hi'
col, 'hi'
col, 'bye'
col, 'hi'
col, 'bye'
col, 'example'
col, 'teehee'
col, 'lol'
col, 'hi'
由于hi
中有多个值bye
和Table B
,它会多次提取Table A
中的值(col),因为我们需要避免这种情况。谈论1000行。
答案 0 :(得分:1)
如果您想要A
中的所有行和B
中的一个任意值,您可以选择多个选项。大多数涉及group by
或distinct
,这相当费用。最高效的方法可能是使用相关的子查询:
select a.*,
(select b.a
from b
where A.y = B.b
limit 1
) as b_a
from a;
为了提高性能,您需要b(b)
上的索引。