0

最終的に、1 つのコンテンツのすべての ID (カンマ区切り) を 1 行で取得するために実行するクエリが見つかりました。

次のクエリはトリックを行いました:

クエリは既に実行されているため、クエリを確認する必要はありません。

SELECT 
    taxonomy_item_id, 
    SUBSTRING(
      (SELECT ', ' + CAST(taxonomy_id AS varchar) AS Expr1
       FROM taxonomy_item_tbl AS t2
       WHERE (t1.taxonomy_item_id = taxonomy_item_id) AND (taxonomy_language_id = 2067)
       ORDER BY taxonomy_item_id, taxonomy_id FOR XML PATH('')
      ), 1, 1000) AS taxonomy_ids
FROM 
    taxonomy_item_tbl AS t1
WHERE 
    (taxonomy_language_id = 2067) AND (taxonomy_item_id = 180555)
GROUP BY 
    taxonomy_item_id

唯一の問題は、私が得るデータ結果です:

180555  |   <Expr1>, 404</Expr1><Expr1>, 405</Expr1><Expr1>, 723</Expr1><Expr1>, 1086</Expr1><Expr1>, 1087</Expr1><Expr1>, 1118</Expr1><Expr1>, 1124</Expr1><Expr1>, 1126</Expr1>

<Expr1>ノードは必要ありません。これを削除する方法はありますか?AS Expr1クエリで削除すると、自動的に追加されます

ありがとう

4

1 に答える 1

0

-が必要ない場合は、<Expr1>要求しないでください。

あなたが持っている:

(SELECT ', ' + CAST(taxonomy_id AS varchar) AS Expr1

これAS Expr1により、<Expr1>が追加されます。そのため、その式は使用しないでください。

試す

SELECT 
    taxonomy_item_id, 
    SUBSTRING(
      (SELECT ', ' + CAST(taxonomy_id AS VARCHAR) 
       FROM dbo.taxonomy_item_tbl AS t2
       WHERE t1.taxonomy_item_id = taxonomy_item_id
       AND taxonomy_language_id = 2067
       ORDER BY taxonomy_item_id, taxonomy_id 
       FOR XML PATH('')
      ), 1, 1000) AS taxonomy_ids
FROM 
    dbo.taxonomy_item_tbl AS t1
WHERE 
    taxonomy_language_id = 2067
    AND taxonomy_item_id = 180555
GROUP BY 
    taxonomy_item_id
于 2011-12-12T17:02:33.953 に答える