表table1
id   num
1    10
2    30
3    40
4    20
5    60
6    50
7    70
...
id 自动编号, num 为intsql语句求出num列和为100的记录(和为100的记录可能有多组,随即取出一组?)有可能为
id  num 
2   30
7   70也有可能为
id  num
3   40
5   60也有可能为其它?

解决方案 »

  1.   

    DECLARE @tb TABLE([id] int, [num] int)
    INSERT INTO @tb
        SELECT  1, 10
        UNION ALL SELECT 2, 30
        UNION ALL SELECT 3, 40
        UNION ALL SELECT 4, 20
        UNION ALL SELECT 5, 60
        UNION ALL SELECT 6, 50
        UNION ALL SELECT 7, 70SELECT TOP 1 A.ID, A.NUM, B.ID, B.NUM FROM @tb A, @tb B
    WHERE A.NUM + B.NUM = 100 AND A.[ID] <> B.[ID] ORDER BY NEWID()
      

  2.   

    DECLARE @tb TABLE([id] int, [num] int)
    INSERT INTO @tb
        SELECT  1, 10
        UNION ALL SELECT 2, 30
        UNION ALL SELECT 3, 40
        UNION ALL SELECT 4, 20
        UNION ALL SELECT 5, 60
        UNION ALL SELECT 6, 50
        UNION ALL SELECT 7, 70SELECT TOP 1 A.ID, B.ID, C.ID, B.NUM, A.NUM, C.NUM
    FROM (SELECT * FROM @tb UNION ALL SELECT 0, 0)A, (SELECT * FROM @tb UNION ALL SELECT 0, 0)B, (SELECT * FROM @tb UNION ALL SELECT 0, 0)C
    WHERE A.NUM + B.NUM + C.NUM= 100 AND A.[ID] <> B.[ID] AND A.[ID] <> C.[ID] AND B.[ID] <> C.[ID]
    ORDER BY NEWID()
      

  3.   

    其他就指一个吗?
    如果是的话,就在上面的条件中限制其中的一个=10就可以,比如A.num=10
    我要休息了。明天接着回答。