如何将表连接在一起 - SQL

Posted

技术标签:

【中文标题】如何将表连接在一起 - SQL【英文标题】:How to join tables together - SQL 【发布时间】:2015-04-29 09:44:00 【问题描述】:

这是一个 SQL 问题

我需要使用内连接语法将两个表连接在一起。一个命名为条目,另一个命名为奖品。我需要列出event_id, horse_id, place, money

ENTRY (TABLE NAME)
COLUMNS IN TABLE ENTRY:
Event_id,
Horse_id
Place

PRIZE (TABLE NAME)
COLUMNS IN TABLE PRIZE:
Event_id,
Place,
Money

这是我所知道的,我无法理解它。

SELECT event_id, horse_id, place
FROM ENTRY INNER JOIN PRIZE
ON ENTRY.money = PRIZE.money

谢谢

【问题讨论】:

【参考方案1】:
SELECT e.Event_id, e.Horse_id, e.place, p.money

FROM ENTRY e join Prize p

ON e.Event_id = p.Event_id

where e.place = p.place;

e 和 p 用作表的别名,以避免由于表名过长而导致 sql 不可读。

使用 e。或 p。您将为该表选择字段,因为可能两个表都有同名的字段,因此执行语句时会出现问题

我添加了 e.place = p.place,因为如果不这样做,您将获得与每个奖项匹配的每个事件的每个位置的结果

例如你会得到 赛事 1 马 1 名 1 奖品 1 赛事 1 马 1 名 1 奖品 2 赛事 1 马 1 名 1 奖品 3 赛事 1 马 1 名 1 奖品 4 等等...直到您获得所有奖品,并且对于每个条目来说这将是相同的,假设奖品的事件等于条目的事件

【讨论】:

我认为您需要为每场比赛的每个位置获得赛事、马匹、位置和奖品> 您应该在答案中添加解释。【参考方案2】:

你应该使用别名来避免歧义

select 
e.event_id,
e.horse_id,
e.place,
p.Money
from ENTRY e 
join PRIZE p on p.event_id = e.event_id

【讨论】:

以上是关于如何将表连接在一起 - SQL的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL 将表与联结表连接起来

将表与自身连接 SQL

在 SQL 中使用多个连接时,将所有内容连接到表 A 或将表 A 连接到表 B、表 B 到表 C 等是不是更快? [复制]

如何使用插入和连接在一起

使用 T-SQL 将表转换为 XML

如何使用适当的密钥将表数据缩减到最小 - SQL?