0

我有两个表,我必须根据查询从两个表中选择值

我有两个表tab1,tab2,每个表都有相同的列name,age,job,gender。在tab 2我有额外的专栏place

我必须从性别为男性的 tab1 和 tab2 中选择所有值

怎么做?

SELECT tab1.name,tab1.gender,tab1.age,tab2.place FROM tab1 INNER JOIN tab2 ON tab1.gender=mhdetail.gender where gender='male';

它是否正确?

4

3 回答 3

2

您需要更具体地了解JOIN条件。如果您在两个表中都没有 id,但是姓名、性别、年龄的组合是唯一的,那么您可以这样做

SELECT t1.name,
       t1.gender,
       t1.age,
       t2.place 
  FROM tab1 t1 LEFT JOIN 
       tab2 t2 ON t1.gender = t2.gender AND
                  t1.name = t2.name AND
                  t1.age = t2.age    
 WHERE t1.gender='male';

这是SQLFiddle

于 2013-03-23T05:13:21.527 回答
0

你不是在寻找加盟。你想要一个Union

SELECT *
FROM MyTable1
WHERE Gender = 'Male'

UNION -- Or 'UNION ALL' if you want duplicates.

SELECT *
FROM MyTable2
WHERE Gender = 'Male'

如果您有 2 个表,并且想要从 2 个表中获取信息,则将使用连接,但只有一个表将包含性别:

SELECT *
FROM   MyTable1
JOIN   MyTable2 ON MyTable1.ID = MyTable1.ID
WHERE  MyTable1.Gender = 'Male'
于 2013-03-23T05:08:20.703 回答
0

您的查询将导致许多重复的行。因为它会变成多对多的关系。如果这两个表通过主键和外键关系等任何方式相关,则使用这些键连接。否则使用上述答案中发布的联合。

于 2013-03-23T05:11:52.440 回答