选择具有最小值总和的不同表中的唯一记录

时间:2015-07-15 11:00:25

标签: python mysql sql database sqlite

我有一个包含3个表的SQLite数据库。这些表中的每一个都有两列:名称和值,以便所有表具有相同的记录(名称)但不同的值。如何选择跨越这些表的最小值之和的记录,以使记录名称是唯一的?

姓名:史蒂文,杰米,迈克尔,乔丹,加里

(按名称顺序)

表1:1,2,3,4,5

表2:2,3,1,5,6

表3:9,0,2,11,3

输出应该返回(Steven,Michael,Jamie),因为在这种情况下,值的总和将等于2,这是最不可能的。

1 个答案:

答案 0 :(得分:0)

你可以试试这个

    SELECT T1.val,T2.val,T3.val FROM T1 , T2 , T3 
    WHERE T1.val <> T2.val AND T2.val <> T3.val AND T1.val <> T3.val
    GROUP BY T1.val,T2.val,T3.val,(T1.no + T2.no + T3.no)
    HAVING (T1.no + T2.no + T3.no) = 
    (SELECT MIN(T1.no)+MIN(T2.no)+MIN(T3.no)     FROM T1 , T2 , T3 
    WHERE T1.val <> T2.val AND T2.val <> T3.val AND T1.val <> T3.val)

如果有超过3个表,只需在FROM T1 , T2 , T3, T4,..TN之后添加表格 并通过在where子句中添加它来添加Comparision不相等 每个表T1.val <> T4.val AND T2.val <> T4.val AND T3.val <>T4.val //为T4添加此内容