我有两个表,我必须根据查询
从两个表中选择值我有两个表,例如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';
这是正确的吗?
答案 0 :(得分: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
答案 1 :(得分: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'
答案 2 :(得分:0)
您的查询将导致许多重复的行。因为它会成为多对多的关系。如果这两个表通过主键和外键关系等任何方式相关,则使用这些键进行连接。否则请使用上面回答中公布的联盟。