从两个表中选择

时间:2012-09-12 09:58:56

标签: mysql sql inner-join

我需要从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

4 个答案:

答案 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)

SQL INNER w3schools

使用该网络练习并理解内,左,右连接。多个查询......

答案 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中没有==(双等号)来检查相等而不是使用单(=)