SQL错误“当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。”
是不是我写得有问题
语句是:
SELECT
CPC.ID CPC_ID,
'book' as Title,
(SELECT Contract_ID FROM Contract_Product WHERE ID = CPC.Contract_Product_ID) Contract_ID,
CPC.Contract_Product_ID,
(SELECT Price FROM Contract WHERE ID =
(SELECT Contract_ID FROM Contract_Product WHERE ID = CPC.Contract_Product_ID)) as Contract_Price,
(SELECT Name FROM Product WHERE ID = CP.Product_ID) Product_Name,
CP.Product_ID,
(SELECT Is_Show FROM Contract_Product WHERE ID = CPC.Contract_Product_ID) Is_Show,
CP.Price,
CP.Is_New,
(SELECT ID FROM Service WHERE ID = (SELECT Service_ID FROM Service_Content WHERE ID = CPC.Service_Content_ID)) Service_ID,
(SELECT Name FROM Service WHERE ID = (SELECT Service_ID FROM Service_Content WHERE ID = CPC.Service_Content_ID)) Service_Name,
CPC.Service_Content_ID,
(SELECT Name FROM Service_Content WHERE ID = CPC.Service_Content_ID) Content_Name,
CPC.Amount,
(SELECT Name FROM Unit WHERE ID =
(SELECT Unit_ID FROM Service_Content WHERE ID = CPC.Service_Content_ID)) Unit,
(SELECT Unit_ID FROM Service_Content WHERE ID = CPC.Service_Content_ID) UnitID,
(SELECT Type_ID FROM Unit WHERE ID =
(SELECT Unit_ID FROM Service_Content WHERE ID = CPC.Service_Content_ID)) Unit_Type_ID,
(SELECT Is_Active FROM Service_Content WHERE ID = CPC.Service_Content_ID) Is_Active,
(SELECT Down_Line FROM Service_Content WHERE ID = CPC.Service_Content_ID) Down_Line,
Is_Default,
CPC.Notes ,
PSC.Jump_Count,
CASE (SELECT COUNT(*) FROM Product_Price WHERE Product_Price.Product_ID=CP.Product_ID
AND Product_Price.Location_ID=16) WHEN 0 THEN (SELECT Price,Manager_Scale,Manager_Scale_Type,Employees_Scale,Employees_Scale_Type FROM Product WHERE Product.ID=CP.Product_ID)
ELSE (SELECT Price,Manager_Scale,Manager_Scale_Type,Employees_Scale,Employees_Scale_Type FROM Product_Price WHERE Product_Price.Product_ID=CP.Product_ID AND Product_Price.Location_ID=16)
END
FROM Contract_Product_Content CPC
JOIN Contract_Product CP ON Contract_Product_ID = CP.ID
LEFT JOIN Porduct_Service_Content_Jump_Count PSC ON PSC.Service_Content_ID=CPC.Service_Content_ID
AND PSC.Product_Content_ID IN (SELECT ID FROM Product_Content WHERE Product_Content.Product_ID=CP.Product_ID)
WHERE Contract_Product_ID IN(SELECT ID FROM Contract_Product WHERE Contract_ID IN ('SL0001'))
ORDER BY CP.Contract_ID,CP.Product_ID,Contract_Product_ID,Service_ID,CPC.Service_Content_ID
参考答案:SELECT后面的查询列里的子查询可能存在多个值
所以会报错