【发布时间】:2019-03-06 20:11:39
【问题描述】:
我有两张桌子
CREATE TABLE [dbo].[Owners]
(
[OwnerId] [int] NOT NULL,
[AccessToken] [nvarchar](50) NULL,
[TokenSecret] [nvarchar](50) NULL
)
CREATE TABLE [dbo].[Tweets]
(
[TweetId] [int] IDENTITY(1,1) NOT NULL,
[ReferenceId] [int] NULL,
[TweetContent] [nvarchar](max) NULL,
[ReferenceType] [int] NOT NULL,
[AccessToken] [nvarchar](50) NULL,
[TokenSecret] [nvarchar](50) NULL,
)
我想返回tweets 的所有字段,根据推文是否有owners,AccessToken/TokenSecret 将来自owner 表,否则它将来自tweets 表。
我很难找出编写此查询的最佳/有效方式。
这是我目前所拥有的(仅从主表返回,如果有则不是所有者)
SELECT *
FROM Tweets t
LEFT JOIN Owners o ON t.ReferenceId = o.OwnerId
WHERE t.ReferenceType = 1
我用的是SQL Server 2017,在tweet表中,ReferenceId是他tweets表的ownerid对应
【问题讨论】:
标签: tsql sql-server-2017