【发布时间】:2013-12-25 13:27:39
【问题描述】:
在 SQL Server 2012 中是否可以使用 *= 进行查询?带有*= 的查询在 SQL Server 2008 和 SQL Server 2005 中工作正常,但在 SQL Server 2012 中不工作。
SELECT
T.DOC_TYPE, T.DOC_NO, T.DOC_DATE, T.LR_NO, T.LR_DATE,
T.DOC_REF, T.USER_ID, T.TRUCK_NO, P.PARTY_NAME, TA.WBSLIP_NO,
TA.RATE, TA.SHORTAGE, TA.OTHER, TA.SERTAX, TA.PAPAMT, TA.BROK,
I.IM_CHLQTY, I.IM_RXDQTY, I.IM_QTY, I.IM_REF,
(SELECT PA.PARTY_NAME
FROM PARTYMST PA, TRINVS
WHERE TRINVS.DOC_TYPE = ?DOCTYPE
AND TRINVS.DOC_NO BETWEEN ?FDOCNO AND ?TDOCNO
AND PA.PARTY_ST + PA.PARTY_NO = TRINVS.TRNP_ST + TRINVS.TRNP_NO) TRNP_NAME
FROM
TRINVS T, TRINVSA TA, IMTRANS I, IMTRANSA IA, PARTYMST P
WHERE
T.DOC_TYPE = ' 30'
AND T.DOC_NO = 'byrod125378' I.DOC_TYPE + I.DOC_NO = T.DOC_TYPE + T.DOC_NO
AND IA.DOC_TYPE + IA.DOC_NO = I.DOC_TYPE + I.DOC_NO
AND I.DOC_TYPE *= TA.DOC_NO
AND P.PARTY_ST + P.PARTY_NO = T.PARTY_ST + T.PARTY_NO
ORDER BY
T.DOC_NO
我收到错误:
*= 附近的语法不正确。
为什么我不能在 SQL Server 2012 中使用 *= 进行联接?查询在 SQL Server 2008 和 SQL Server 2005 中运行良好。对于 SQL Server 2012,是否有任何替代 *= 的方法?
【问题讨论】:
-
通常LEFT JOIN。
-
自 ANSI / ISO SQL 标准 92(是的 - 1992 - 20 多年前!) - 任何关系数据库是使用
INNER JOIN或LEFT OUTER JOIN等 -
我需要为每个字段使用左连接吗??
-
*= 适用于 w。 SQL Server 2008 仅在兼容模式下 (SQL 2000)。
-
您可以将其用作正确连接语法的介绍:codinghorror.com/blog/2007/10/…。一旦你了解了基本概念,相信你就会明白如何使用它。
标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2012