0

私はこれを持っています:

SELECT
COUNT(resurs_id) AS 'antalLikes'
FROM kopplaResursLikesUsers
WHERE resurs_id = 19
UNION
SELECT user_id AS 'gillarJagEller'
FROM kopplaResursLikesUsers
WHERE user_id = 5

そして、私は出力が次のようになると思いました:

antalLikes = 2
gillarJagEller = 5

しかし、私が得る結果は次のとおりです。

antalLikes[0] = 2
antalLikes[1] = 5

私の2番目の「AS」ステートメントを完全に無視する理由はありますか?

4

3 に答える 3

1

UNIONUNIONのためCOLUMSではなく、のために作成しrows ます。つまり、最初の選択を取得し、を取得してから、序数の順序でcolumn 'antalLikes' 作成します。unionだから、それはあなたからの値を'gillarJagEller' column最初のものに入れます

あなたの望む結果を得るために、私はこれを提案します:

select
(
SELECT
COUNT(resurs_id) 
FROM kopplaResursLikesUsers
WHERE resurs_id = 19) AS 'antalLikes',
(
 SELECT user_id 
 FROM kopplaResursLikesUsers
 WHERE user_id = 5) AS 'gillarJagEller'
于 2012-08-22T19:14:25.780 に答える
1

UNIONは、最初のselectステートメントで指定された名前(この場合は「antalLikes」)のみを列名として使用します。

これを取得するには:

antalLikes = 2 gillarJagEller = 5

次のようなものが必要です。

SELECT
COUNT(resurs_id) AS 'antalLikes', 
(SELECT top 1 user_id
FROM kopplaResursLikesUsers
WHERE user_id = 5) AS 'gillarJagEller'
FROM kopplaResursLikesUsers
WHERE resurs_id = 19
于 2012-08-22T19:23:11.340 に答える
1

の列名と列データ型は、UNIONの最初のselectステートメントによって提供されUNIONます。後続の`selectステートメントの列名はすべて無視されます。

の後続selectのステートメントはUNION、最初のステートメントと同じ数の列を持つ必要がありますselect。さらに、後続の各ステートメントの各列はselect、最初のステートメントの同じ序数の列と同一であるselectか、そのデータ型に暗黙的に変換可能なデータ型を持っている必要があります。

WRTをnullにする場合、各コンポーネントステートメントUNIONで同じ列のnullを調べることにより、最終結果セットの各列のnullを設定すると思います。selectその列が各コンポーネントステートメント全体でnull許容でない場合にのみselect、最終結果セットの列はnull許容できません。

于 2012-08-22T19:30:04.717 に答える