0
:クエリでレコードを1つだけ返すようにするにはどうすればよいですか?私は次のエラーを受信してい
'Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, ...
は、ここに私のクエリです:
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
をしたいと思います...
これは、メインクエリではなく、TOP 1を必要とするSELECT句のサブクエリです。 – JNevill
このクエリは 'TopicId = Topic.Id'が1レコード以上を返すFeaturedTopicから1を選択します。その結果をどうするかはわかりません。 'TopicId = Topic.Id'でFeaturedTopicからTOP1を選択してみてください。またはTopicId = Topic.IdのFeaturedTopicからDISTINCT1を選択してください。 – JNevill
ORDER BYがないので、そのクエリは**おそらく非決定論です**。また、それを「通常の」結合に変換すると、多重度を調整できる場所を示すことができます。 – user2864740