0

我有两个表,table1table2,具有相同的结构。列是R, a, b, c, d; a, b, c,dINTs 和RVARCHAR.

我需要所有R的 s 其中和的总和小于 40 并且对于, 和atable1相同的。table2bcd

我执行的语句是:

SELECT table1.R FROM table1,table2 where
table1.a + table2.a <40 or
table1.b + table2.b <40 or 
table1.c + table2.c <40 or 
table1.d + table2.d <40;

但它给出了意想不到的结果。返回的行数远远大于两个表的记录数之和。

    table1                   table2
R   a   b   c   d            R      a     b    c    d
i1 45  28  29  22           i1      8   20   13    8
i2 28  28  29  30           i2      12   12  16     20 
i2 28  28  10  30           i2      12   12  16     20 
i2 28  5  29  30            i2      12   12  16     20 
i2 28  28  10  30           i2      12   12  16     20 
i2 28  28  29  30           i2      15   15  10     12 
i2 10  12  15  20           i2      8     3  6      12 

expected results 
i1

because table1.d+table2.d <40 for R = i1
4

1 回答 1

1

这并不完全清楚,但您可能想要的是:

SELECT table1.R FROM table1,table2 where
table1.R = table2.R and
(table1.a + table2.a <40 or
 table1.b + table2.b <40 or 
 table1.c + table2.c <40 or 
 table1.d + table2.d <40);

看到这个小提琴

于 2012-12-16T04:28:28.703 回答