我有两个表table1
和table2
,结构相同。列为R
,a
,b
,c
,d
; a
,b
,c
,d
为INT
,R
为VARCHAR
。
我需要R
a
和table1
中table2
的总和小于40且b
,c
相同的所有d
和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
但它给出了意想不到的结果。返回的行数远远大于两个表的记录数之和。
{{1}}
答案 0 :(得分: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);
请参阅此FIDDLE