【发布时间】:2019-01-17 00:27:33
【问题描述】:
我想将三个 T-SQL 语句合并为一个,因此它只是对数据库的一次调用,而不是三个。
SELECT * FROM Clients
第一个,从客户表中选择每个客户。
SELECT * FROM History
第二个,从历史表中选择所有历史条目。然后我使用一些代码来查找每个客户端的第一个历史记录。即ClientID 表中的第一个历史记录被设置到ClientID 的HasHistory 列中。
SELECT * FROM Actions
最后一个,我从动作表中得到所有动作。然后我使用一些代码来查找每个客户端的最后一个操作。即 ClientID 表中的最后一个操作被设置到 ClientID 的 LastAction 列中。
所以我想知道是否有办法编写这样的 SQL 语句?请注意,这不是真正的 SQL,只是用来说明我要实现的目标的伪代码。
SELECT *
FROM Clients
AND
SELECT First History Row
FROM History
WHERE History.ClientID = Clients.ClientID
AND
SELECT Last Action Row
FROM Actions
WHERE Actions.ClientID = Clients.ClientID
【问题讨论】:
-
提示:
INNER JOIN或UNION和TOP 1取决于您的目标 -
TOP 1 是否获得第一行?对不起,如果这是一个愚蠢的问题。我对 SQL 的经验很少,所以不知道 INNER JOIN、UNION 或 TOP 1 是什么意思。
-
刚刚查找了UNION,但我认为这不会起作用。 w3schools.com/sql/sql_union.asp
-
您应该首先了解
INNER JOIN,它是SQL 的一个基本组件。然后,您需要在History和Actions表中找到一个列,该列指示“最后”记录是什么。此表中是否有日期或数字列表明这一点? -
要回答你需要向我们展示每个表的所有列以及预期结果是什么
标签: sql .net sql-server