我必须找到存储在数据库中的数据组合,以使用sql填充输入值。
表格第一
ID| Value |
1 | 8 |
2 | 10 |
3 | 12 |
4 | 14 |
表值
ID| Value |
1 | 2 |
2 | 3 |
3 | 4 |
4 | 5 |
5 | 6 |
如果输入值为8,我必须在表格中找到与此相等的值的可能组合。
可能性:
ID, 1 and 5
ID, 3 and 3
ID, 2 and 4
我如何从SQL查询中获取此信息?
答案 0 :(得分:3)
如果您正在寻找配对,则需要使用条件进行连接:
select t1.Value, t2.Value
from table t1 join
table t2
on t1.Value + t2.Value = 8;
编辑:
如果你真的想得到1和5而不是5和1,那么你需要在on
子句中使用distinct和另一个条件:
select distinct t1.Value, t2.Value
from table t1 join
table t2
on t1.Value + t2.Value = 8 and
t1.Id <= t2.Id;
distinct
是如此“3,3”不会出现两次。
答案 1 :(得分:2)
你可以做一个自我 - CROSS JOIN
并检查总数。 <=
条件是为了防止收件人出现重复:
SELECT t1.ID, t2.ID
FROM tbl t1 CROSS JOIN tbl t2
WHERE t1.value + t2.value = 8
AND t1.ID <= t2.ID
答案 2 :(得分:1)
试试这个:
SELECT T1.ID,T2.ID as ID2
FROM TableName T1 CROSS JOIN
TableName T2
WHERE T1.Value+T2.Value=8 AND T1.ID<=T2.ID
ORDER BY T1.ID
结果:
ID ID2
1 5
2 4
3 3
请参阅SQL Fiddle中的结果。