sql - 将多于 1 行的输出设置为 1 个变量
问题描述
我希望能够在单个变量中保存不止 1 个来自 SELECT 查询的输出。
目前我正在收集我需要的数据,如下所示:
DECLARE @something1 VARCHAR(MAX)
DECLARE @something2 VARCHAR(MAX)
DECLARE @something3 VARCHAR(MAX)
SET @something1 = (
SELECT
Custom AS 'XXL Format'
FROM
tblData
WHERE
ID = 1);
SET @something2 = (
SELECT
Custom.value('(/Individual/text())[1]', 'varchar(MAX)') AS 'Non XML Format'
FROM
tblData
WHERE
ID = 1)
SET @something3 = (
SELECT
tbl1.paper,
tbl2.type
FROM
tblData AS tbl1
JOIN tblData2 tbl2
ON tbl1.ID = tbl2.ID
WHERE
ID = 1);
我有以下演示,显示了我想要做什么
DECLARE @tester VARCHAR(MAX)
SET @tester = (
SELECT
tbl1.Custom AS 'XXL Format',
tbl1.Custom.value('(/Individual/text())[1]', 'varchar(MAX)') AS 'Non XML Format'
tbl1.paper,
tbl2.type
FROM
tblData AS tbl1
JOIN tblData2 tbl2
ON tbl1.ID = tbl2.ID
WHERE
ID = 1);
我得到以下错误:
不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式
两个演示都可以在这里找到
我试图将变量设置为“表”并像这样存储数据,但这似乎也不能正常工作[我确定我做错了什么——这可能是我要问的这个问题的答案]
对于上述查询输出的所有内容,我怎样才能只使用 1 个变量?
解决方案
所以我想我将变量设置为临时“表”是正确的。我终于让它满足我的需求了!
DECLARE @tmpTbl table (_xml, _parsedXML, _paper, _type)
INSERT INTO @tmpTbl
SELECT
tbl1.Custom AS 'XML Format',
tbl1.Custom.value('(/Individual/text())[1]', 'varchar(MAX)') AS 'Non XML Format',
tbl1.paper,
tbl2.type
FROM
tblData AS tbl1
JOIN tblData2 AS tbl2
ON tbl1.ID = tbl2.ID
WHERE
ID = 1;
DECLARE @something1 VARCHAR(MAX) = (SELECT _xml FROM @tmpTbl);
DECLARE @something2 VARCHAR(MAX) = (SELECT _parsedXML FROM @tmpTbl);
DECLARE @something3 VARCHAR(MAX) = (SELECT _paper FROM @tmpTbl);
DECLARE @something4 VARCHAR(MAX) = (SELECT _type FROM @tmpTbl);
DELETE FROM @tmpTbl --Not really needed but nice to be offical :)
以上将值存储到一个地方。虽然它不在 1 个变量中,但我想必须创建一个临时表对数据库/性能来说并不是那么糟糕......
推荐阅读
- php - 没有集体的 Laravel 形式
- python - 如何更新具有 nan 维度的 dask 数组的形状、块和块大小元数据
- bash - MacOS:为其他用户设置暗模式?
- python - python中带有迭代器的while循环,它不断变化
- sql - 转换日期时间格式 DATETIME20。在 SQL 中
- python - 问题,在python 3.7中构建一个switch case
- php - 来自 URL 的 PHP 图像
- kubernetes - 使用 entryPoints.http.forwardedHeaders 的带有 X-Forwarded-For 标头的 Traefik 白名单不起作用
- java - 使用 CrudRepository 和 Thymeleaf 的 Spring MVC(文本字段和按钮)
- excel - Excel 宏与 Excel 加载项和单元格选择