«выберите abc из (выберите 1), так как abc» производит «(1)» вместо «1» - PullRequest
1 голос
/ 10 апреля 2009

В Postgre, почему

select abc from (select 1) as abc

производит:

(1)

и

select * from (select 1) as abc

производит:

1

Это действительно странно для меня. Так ли это с MySQL, Oracle и т. Д.? Я часами выяснял, почему мои условия ухудшались ...

1 Ответ

4 голосов
/ 10 апреля 2009

Строки, возвращаемые вашими запросами, имеют различный тип: первая - ROW(INT), а вторая - INT.

MySQL и другим не хватает этой функции.

В первом запросе вы выбираете целый ROW в виде одного столбца. Этот запрос

SELECT abc FROM (SELECT 1, 2) abc

выдаст (1, 2), который также является одиночным столбцом и имеет тип ROW.

Чтобы выбрать значение INT, используйте:

SELECT  abc.col
FROM    (
        SELECT  1 AS col
        ) abc
...