尝试在sql 2005中运行此查询时出现以下错误:
SELECT tb.*
FROM (
SELECT *
FROM vCodesWithPEs INNER JOIN vDeriveAvailabilityFromPE
ON vCodesWithPEs.PROD_PERM = vDeriveAvailabilityFromPE.PEID
INNER JOIN PE_PDP ON vCodesWithPEs.PROD_PERM = PE_PDP.PEID
) AS tb;
Error: The column 'PEID' was specified multiple times for 'tb'.
Run Code Online (Sandbox Code Playgroud)
我是sql的新手.提前感谢您的建议.
ENEO.
Vin*_*vic 41
如上所述,问题在于您从两个表中选择PEID,解决方案是指定您想要的PEID,例如
SELECT tb.*
FROM (
SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
) AS tb;
Run Code Online (Sandbox Code Playgroud)
除此之外,正如Chris Lively巧妙地在评论中指出的那样,外部SELECT完全是多余的.以下完全等同于第一个.
SELECT tb1.PEID,tb2.col1,tb2.col2,tb3.col3 --, and so on
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
Run Code Online (Sandbox Code Playgroud)
甚至
SELECT *
FROM vCodesWithPEs as tb1 INNER JOIN vDeriveAvailabilityFromPE as tb2
ON tb1.PROD_PERM = tb2.PEID
INNER JOIN PE_PDP tb3 ON tb1.PROD_PERM = tb3.PEID
Run Code Online (Sandbox Code Playgroud)
但请尽量避免使用SELECT*.它可能在您进行交互式查询以保存键入时有效,但在生产代码中从不使用它.
归档时间: |
|
查看次数: |
72691 次 |
最近记录: |