我有一個以下查詢在子查詢中有連接,並且從主要查詢從子句中引用了連接表。這是SQL Server 2000語法,我試圖將它遷移到2008語法,但在運行時出現錯誤。請建議。如何實現在SQL 2008中的主要查詢中引用表的子查詢中的連接
CREATE TABLE [dbo].[PRODUCT]
(
[pid] [int] NULL,
[NAME] [nchar](10) NULL,
[PDID] [int] NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[PRODUCTDESC]
(
[PDID] [int] NULL,
[DESC] [nchar](10) NULL
) ON [PRIMARY]
--Test Data
insert into PRODUCT values (1,'ONE',1);
insert into PRODUCT values (2,'2',2);
insert into PRODUCT values (3,'3',2);
insert into PRODUCT values (4,'4',null);
insert into PRODUCT values (5,'4',5);
INSERT INTO PRODUCTDESC VALUES (1,'ONENEN');
INSERT INTO PRODUCTDESC VALUES (2,'TWEONEN');
-- SQL Server 2000
SELECT
Name,
(SELECT [DESC]
FROM PRODUCTDESC
WHERE PRODUCT.PDID *= PRODUCTDESC.PDID)
FROM
PRODUCT
--RESULTS
/*
Name (No column name)
ONE ONENEN
2 TWEONEN
3 TWEONEN
4 NULL
*/
-- SQL Server 2008
SELECT
NAME,
(SELECT [DESC]
FROM PRODUCT
LEFT OUTER JOIN PRODUCTDESC ON PRODUCT.PDID = PRODUCTDESC.PDID)
FROM
PRODUCT
--RESULTS
/*
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
*/
在上述2008年的查詢與子查詢中我們如何可以訪問主查詢形式的條款提到的表,讓我不明白的子查詢returend超過1個值誤差
請建議。
sqlnewbie:您不能隨意刪除其他人的帖子的內容,請停止提示此類修改。我再次回顧您的問題,以便包含所有人在此回答的內容。 –
@wesley - 我再次回滾 – JNK
sqlnewbie,編輯是澄清,拼寫,語法,標點符號,格式等 - 我不知道你有什麼想法,但我不認爲任何人會感激你擦除回答他們花時間提供給你。 –