SQL查询组合搜索

时间:2014-05-06 10:50:08

标签: mysql sql

我必须找到存储在数据库中的数据组合,以使用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查询中获取此信息?

3 个答案:

答案 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中的结果。