JOIN或两个表的联合 - SQL

时间:2018-05-05 22:32:42

标签: mysql sql

如何在一个表结果中统一两个select语句?

例如在第一个表中,我希望得到一切,但是在我的第二个表上我只想要一个等于我的第二个表的corel_id和id的corel名称?

SELECT * 
  FROM garage 
 UNION 
 SELECT c.name 
  FROM corel as c 
WHERE EXISTS (SELECT 1 FROM garage as g WHERE c.id = g.corel_id

我试图执行此操作,但这不起作用。这是正确的吗?或者有更好的方法吗?

抱歉新手在这里。

更新预期结果:

https://anotepad.com/notes/b6662w

3 个答案:

答案 0 :(得分:3)

尝试一下:

SELECT g.*, c.name
FROM garage g
LEFT JOIN corel c
ON c.id = g.corel_id

匹配数据库中的两个表称为 join 。内部联接(默认情况下)仅返回与两个表匹配的行。

左连接返回第一个表中的所有行,无论它们是否与第二个表匹配,以及第二个表中匹配的任何数据。右连接执行逆操作,仅返回第二个表中的不匹配数据。还有完整的联接,无论匹配如何都会返回所有数据。

答案 1 :(得分:1)

您需要一个连接语句。连接根据where子句中的匹配条件将多个表中的列放在一起。

union需要2个或更多查询才能拥有相同的列。联合将行集合放在一起或多行。

答案 2 :(得分:-1)

你试过这个吗?

SELECT * FROM garage as g LEFT JOIN Select 1 FROM corel as c WHERE g.id = c.id