如何在2个表上进行连接,但只返回一个表的数据?

时间:2018-04-14 15:47:05

标签: mysql sql

我不确定这是否可行。但是是否可以在2个表上进行连接,但只返回其中一个表的数据。我想根据条件加入这两个表,但我只想要其中一个表的数据。这有可能与SQL,如果是这样如何?阅读文档后,似乎当您进行连接时,您将获得两个表的数据。谢谢你的帮助!

4 个答案:

答案 0 :(得分:1)

您可以从两个表中获取数据,因为加入基于" Cartesian Product" + " Selection&#34 ; 即可。但是在加入之后,您可以使用所需的列执行" Projection"

SQL有一个简单的语法:

t1.*

您可以通过别名选择表:t2.**。符号where表示"所有字段"。

您还可以加入order by子句,outer join或其他加入类型,例如cross join或{{1}}。

答案 1 :(得分:1)

典型的SQL查询有多个子句。

SELECT子句提到了结果集中所需的列。

FROM子句(包括JOIN个操作)提到了要从中检索这些列的表。

WHERE子句过滤结果集。

ORDER BY子句指定结果集中行的显示顺序。

还有一些其他条款,例如GROUP BYLIMIT。你可以阅读这些。

要执行您的要求,请选择所需的列,然后提及所需的表。这样的事情。

   SELECT t1.id, t1.name, t1.address
     FROM t1
     JOIN t2 ON t2.t1_id = t1.id

这为您提供t1中与t2匹配的行的数据。

专业提示:避免使用SELECT *。相反,请提及您想要的列。

答案 2 :(得分:1)

如果您愿意,通常可以使用exists(或in)完成此操作:

select t1.*
from table1 t1
where exists (select 1 from table2 t2 on t2.x = t1.y);

虽然您可以使用join,但如果table2中存在重复的匹配项,则会冒成倍增结果集中行数的风险。使用exists(或in)不存在此类重复的危险。我也发现逻辑更自然。

答案 3 :(得分:0)

如果您加入2张桌子。

您可以使用 SELECT 选择所需的数据

如果你想获得一个数据表,你可以这样做,只需选择一个表日期

SELECT b.title
FROM blog b
JOIN type t ON b.type_id=t.id;

如果要从两个表中获取数据,可以执行此操作,选择两个表日期。

SELECT b.title,t.type_name
FROM blog b
JOIN type t ON b.type_id=t.id;