7

*=由于缺乏对( LEFT OUTER JOIN) 运算符的支持,我们遇到了 SQL Server 2012 问题。

谁能告诉我在 SQL Server 2008 上正常工作的以下 SQL 的 SQL Server 2012 的正确语法是什么?

SELECT 
    t7410.name, t7408.type, t7410.length, 
    t7410.status, t7410.prec, t7410.scale, 
    t7409.type 
FROM 
    dbo.syscolumns t7410, dbo.systypes t7408, 
    dbo.sysobjects t7409, dbo.sysusers t7411, 
    master.dbo.syslogins t7412 
WHERE 
    t7410.id = t7409.id 
    AND t7411.uid = t7409.uid 
    AND t7409.name = 'GENERAL'
    AND t7409.type IN ('U', 'S', 'V') 
    AND t7410.usertype *= t7408.usertype 
    AND t7412.sid = t7411.sid 
    AND t7412.name = user_name() 
ORDER BY 
    t7410.colid ASC
4

1 回答 1

19

为什么不用 ANSI JOIN 语法来写这个:

SELECT t7410.name, t7408.type, t7410.length, 
    t7410.status, t7410.prec, t7410.scale, 
    t7409.type 
FROM dbo.syscolumns t7410
INNER JOIN dbo.sysobjects t7409
    ON t7410.id = t7409.id
INNER JOIN dbo.sysusers t7411
    ON t7411.uid = t7409.uid 
INNER JOIN master.dbo.syslogins t7412 
    ON t7412.sid = t7411.sid 
LEFT JOIN dbo.systypes t7408
    ON t7410.usertype = t7408.usertype 
WHERE t7409.name = 'GENERAL'
    AND t7409.type IN ('U', 'S', 'V') 
    AND t7412.name = user_name() 
ORDER BY t7410.colid ASC
于 2012-11-20T21:33:52.680 回答