我需要从2个表中选择几个列:
Tab1
| Col1 | Col2 | Col3
Tab2
| Col1 | Col4 | Col5
这是我的疑问:
SELECT A.*,B.Col4
FROM Tab1 A,Tab2 B
WHERE A.Col1=B.Col1
AND A.Col2=='XXX'
AND A.Col3>5;
但是,此查询以某种方式连接两个表,重复某些行。这有什么问题?
预期结果是这一个:
Tab3
| Col1 | Col2 | Col3 | Col4
答案 0 :(得分:1)
您应该使用=
代替==
。
如果col1是Tab1的主键,col2是Tab2的主键,并且Tab1和Tab2之间的关系是一对一的,则无法复制记录。
SELECT A.*,B.Col4
FROM Tab1 A,Tab2 B
WHERE A.Col1=B.Col1
AND A.Col2 ='XXX'
AND A.Col3>5;
答案 1 :(得分:1)
您发布的查询没有问题,但如果问题是
重复某些行
如您所述,然后使用DISTINCT
:
SELECT DISTINCT A.*, B.Col4
FROM Tab1 A, Tab2 B
WHERE A.Col1 = B.Col1
AND A.Col2 = 'XXX'
AND A.Col3 > 5;
或其他JOIN
语法:
SELECT DISTINCT A.*,B.Col4
FROM Tab1 A
INNER JOIN Tab2 B ON A.Col1 = B.Col1
WHERE A.Col2 ='XXX'
AND A.Col3 > 5;
答案 2 :(得分:1)
使用该网络练习并理解内,左,右连接。多个查询......
答案 3 :(得分:0)
使用加入
SELECT A.*,B.Col4
FROM Tab1 A JOIN Tab2 B ON A.Col1=B.Col1
WHERE A.Col2='XXX'
AND A.Col3>5;
要注意在sql中没有==(双等号)来检查相等而不是使用单(=)