Синтаксическая диаграмма для select
показывает:
Самый внешний путь этого показывает простой, без префикса *
подстановочный знак для всех столбцов сам по себе, и нет никакого возврата назад для дополнительных выражений столбцов - все пути с запятой (для разделения терминов) отличаются от этого обычный *
путь.
На внутреннем пути, который допускает , допускается запятая и, следовательно, несколько выражений, вы можете использовать только .*
с префиксом таблицы / представления / псевдонима, а затем можете следовать (или предшествовать) этому с другие выражения.
(Я действительно думал, что где-то было сказано более четко, но я не могу найти его где-нибудь в недавней документации ...)
Почему я должен использовать псевдоним для знака *?
select col,aa.* from A aa;
Это не вполне точно; вам не нужно использовать псевдоним, вы можете использовать имя таблицы напрямую, если оно не является псевдонимом, так что это также верно:
select col,A.* from A;
Существует школа мысли, что в любом случае не следует использовать подстановочный знак, по крайней мере, для чего-либо, кроме специального запроса - лучше явно перечислить все необходимые имена столбцов с префиксом, в частности, с соответствующим именем таблицы / псевдонимом если есть соединение, для ясности и во избежание непредвиденных проблем с изменяемыми таблицами. Это скорее выходит за рамки этого вопроса, хотя * 8 -)