2016-04-16 2 views
6

У нас этот вопрос:Каковы различия между SQL-запросами?

SELECT t FROM articles t WHERE t.article_id = 59446 

Также известный как:

SELECT articles FROM articles WHERE articles.article_id = 59446 

Я не могу понять,

SELECT articles FROM articles 

Что это значит? Почему это работает?

Update: таблица «статьи» не имеет столбец «статьи»

+0

Есть ли столбец с именем 'articles' в таблице' articles'? – Kevin

+0

@Kevin Нет, в таблицах «статьи» нет столбцов «статьи», – Alexander

ответ

7

Это результат объектно-реляционной архитектуры Postgres'. Для каждой создаваемой таблицы есть также соответствующее имя composite type с таким же именем.

При запуске

SELECT articles 
FROM articles 

вы выбираете один столбец с типаarticles из таблицы с именем articles. Если вы обратите пристальное внимание на вывод этого запроса, вы заметите, что ваш результат содержит только один столбец, где значение заключено в круглые скобки, например. (1,Foobar) (если в табличных товарах имеется две колонки). При запуске select * from articles выход две колонки (и не круглые скобки)

То же самое происходит, когда вы положили список столбцов между скобками:

select (article_id, article_name) 
from articles 

также возвращает единственный столбец с anonymous composite type, содержащий два поля (это также хороший пример того, что «столбец» и «поле» - это не одно и то же).

Смежные вопросы