[英]Subquery returning more than one value per row
我有一個返回多行的子查詢,這正是我需要的。 但我收到錯誤:
子查詢返回了 1 個以上的值。 當子查詢跟隨 =、!=、<、<=、>、>= 或當子查詢用作表達式時,這是不允許的。
我的查詢如下所示:
SELECT
number,
req.dv_cat_item,
req.dv_stage,
req.dv_state req_state,
u.dv_u_lob,
u.dv_location,
req.opened_at,
req.closed_at,
req.dv_closed_by,
(SELECT name FROM sc_item_option vars
OUTER APPLY STRING_SPLIT(vars.value, ',') s
LEFT JOIN cmdb_ci_server AS c ON c.sys_id =s.value
JOIN sc_item_option_mtom mtom ON vars.sys_id = mtom.sc_item_option
JOIN sc_req_item req ON mtom.request_item = req.sys_id
WHERE mtom.request_item = req.sys_id
AND item_option_new = '915ec43a13ff520012c73482e144b002') --as [Server]
FROM
sc_req_item req
JOIN
sys_user u ON u.sys_id = req.u_requested_for
AND req.dv_cat_item = 'system id request'
AND req.sys_id IN ('a0880b7c1bb1c41c5c68b8061a4bcb99', '6a066d111bb14cd0fafc1f861a4bcb2b')
我嘗試使用 where exists 並嘗試將該子查詢移至最后 4 行下方。 到目前為止沒有運氣。
任何人都可以幫忙嗎?
謝謝
為此,您必須確保子查詢返回一個值。 如果它返回多個 sql 將不知道選擇哪一個作為結果我相信這是你應該做的:
SELECT number
,req.dv_cat_item
,req.dv_stage
,req.dv_state req_state
,u.dv_u_lob
,u.dv_location
,req.opened_at
,req.closed_at
,req.dv_closed_by
,b.name
FROM sc_req_item req
JOIN sys_user u ON u.sys_id = req.u_requested_for
AND req.dv_cat_item = 'system id request'
AND req.sys_id IN (
'a0880b7c1bb1c41c5c68b8061a4bcb99'
,'6a066d111bb14cd0fafc1f861a4bcb2b'
)
INNER JOIN (
SELECT name
,request_item
FROM sc_item_option vars
OUTER APPLY STRING_SPLIT(vars.value, ',') s
LEFT JOIN cmdb_ci_server AS c ON c.sys_id = s.value
JOIN sc_item_option_mtom mtom ON vars.sys_id = mtom.sc_item_option
JOIN sc_req_item req ON mtom.request_item = req.sys_id
WHERE item_option_new = '915ec43a13ff520012c73482e144b002'
) b ON b.request_item = req.sys_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.