考慮到這是在一個MySQL腳本中定義:如何訪問mysql別名?
`Project1`.`Id` AS `Id1d334656-0d51-4bf6-bb08-6c25d01e7745`
這是否意味着
`Project1`.`Id`
不再訪問該名稱,並只能由
`Project1`.`Id1d334656-0d51-4bf6-bb08-6c25d01e7745`
?
背景:此腳本由MySqlConnector/net生成,並且這是生成的命令的一部分。
考慮到這是在一個MySQL腳本中定義:如何訪問mysql別名?
`Project1`.`Id` AS `Id1d334656-0d51-4bf6-bb08-6c25d01e7745`
這是否意味着
`Project1`.`Id`
不再訪問該名稱,並只能由
`Project1`.`Id1d334656-0d51-4bf6-bb08-6c25d01e7745`
?
背景:此腳本由MySqlConnector/net生成,並且這是生成的命令的一部分。
別名沒有表分配,所以它只是ID1d3346etc....
。如果他們這樣做了,那就會破壞別名的目的,例如,
select table1.x AS abc, table2.x AS abc
將是一個錯誤,即使兩個別名是從不同的表來。
是的。這很像在選擇時重命名列。在select
查詢之外,應該使用別名來引用列,但在選擇查詢中,應該使用表列,例如如下:
select col1 as a
from table b
where col1 = 'xxx';
但外面選擇查詢,別名應該使用:
select a
from (select col1 AS a From table) b
where a = 'xxxx';
如果您嘗試使用表列,它將會失敗:
<<----FAILURE -->
select col1
from (select col1 AS a From table) b
where a = 'xxxx';
如果只是其中之一被定義爲'select table1.x AS abc',然後在後來嘗試使用'table.x'來引用'table.x',這是什麼原因導致,以及爲什麼會拋出異常? –
我相信沒有什麼會導致拋出異常。這在我的代碼或結構中一定是錯誤的。感謝Marc,我接受了這個答案。 –
別名僅存在於查詢級別。 'select table1.x AS abc,table2.abc'不是一個錯誤,因爲'abc'和'table2.abc'是兩個完全不同的東西,但是稍後嘗試使用'abc'將會是不明確的。 –