[英]How do I force a query to return just one record?
我收到以下错误:
'子查询返回的值超过1。 当子查询遵循=,!=,...时,这是不允许的
这是我的查询:
let getLinkTopicsSql = "SELECT Topic.Id,
Topic.Name,
isnull( (select 1 from FeaturedTopic where TopicId = Topic.Id),0) as IsFeatured
FROM Topic
INNER JOIN LinkTopic
ON LinkTopic.TopicId = Topic.Id
INNER JOIN Link
ON LinkTopic.LinkId = Link.Id
WHERE Link.Id = @LinkId"
我试过了:
SELECT TOP 1
像这样:
let getLinkTopicsSql = "SELECT TOP 1 Topic.Id,
Topic.Name,
isnull( (select 1 from FeaturedTopic where TopicId = Topic.Id),0) as IsFeatured
FROM Topic
INNER JOIN LinkTopic
ON LinkTopic.TopicId = Topic.Id
INNER JOIN Link
ON LinkTopic.LinkId = Link.Id
WHERE Link.Id = @LinkId"
但是我仍然收到同样的异常。
我不确定该如何解决...
我想你想要exists
:
(case when exists (select 1 from FeaturedTopic where TopicId = Topic.Id)
then 1 else 0
end) as IsFeatured
您可以使用isnull()
来完成此操作,如下所示:
isnull( (select top (1) 1 from FeaturedTopic where TopicId = Topic.Id), 0) as IsFeatured
是否:
select coalesce(max(1), 0) from FeaturedTopic where TopicId = Topic.Id) as IsFeatured
但我认为exists
是最清晰的形式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.