[英]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.