Re: a proposal for a new functionality: "SELECT * [EXCEPT col1 [,col2]]

Поиск
Список
Период
Сортировка
От Josef Šimánek
Тема Re: a proposal for a new functionality: "SELECT * [EXCEPT col1 [,col2]]
Дата
Msg-id CAFp7QwpCNq_wuXwaOOjvcaRjC3vVTQZrifbb3EHpPv9ZWiVz+w@mail.gmail.com
обсуждение исходный текст
Ответ на Re: a proposal for a new functionality: "SELECT * [EXCEPT col1 [,col2]]  (Miles Elam <miles.elam@productops.com>)
Ответы Re: a proposal for a new functionality: "SELECT * [EXCEPT col1 [,col2]]  (Miles Elam <miles.elam@productops.com>)
Список pgsql-general


út 25. 2. 2020 v 15:35 odesílatel Miles Elam <miles.elam@productops.com> napsal:
How do you see this syntax working in a JOIN query?

SELECT x.* EXCEPT x.col1, x.col2, y.col1
FROM tablex AS x
  LEFT JOIN tabley AS y;

The column(s) you want to exclude become ambiguous.

Can you explain how are those column(s) ambiguous in your example? I would expect to select everything from table x (as SELECT x.* should do) except x.col1 and x.col2. Nothing is selected from table y thus y.col1 is not relevant here (the question is if this is problem or not - raise, ignore?).
 
Parentheses?

SELECT x.* EXCEPT (x.col1, x.col2), y.col1
FROM tablex AS x
  LEFT JOIN tabley AS y;

Could work, but this is encouraging the use of the wildcard selector, which I'm not sure is a productive or maintainable goal. In exchange for flexibility, you've added a non-trivial amount of comprehension complexity. I'm not a big fan of the wildcard selector except in the most trivial cases and even then only as part of development toward a final query with all columns specified. Then again I try not to have tables with hundreds of columns (or even tens in most cases), so my own use cases may bias me. Personally I just don't like queries where I cannot clearly see what it being returned to me. Anything that makes that ambiguity more popular will be viewed with a skeptical eye.


On Tue, Feb 25, 2020 at 2:18 AM Stanislav Motyčka <stanislav.motycka@gmail.com> wrote:
Hello,

Sometimes (for tables with many columns) it would be better and easier to write "SELECT" statement with clause "EXCEPT":
"SELECT * [EXCEPT col1 [,col2]] FROM ..."

It's easier to write "except" one or two columns from all (*) as to write names of all columns besides one or two.
What do you thin about it?

Best regards
Stano Motycka

В списке pgsql-general по дате отправления:

Предыдущее
От: Laurenz Albe
Дата:
Сообщение: Re: Upgrade to 12.2 using same data directory
Следующее
От: Miles Elam
Дата:
Сообщение: Re: a proposal for a new functionality: "SELECT * [EXCEPT col1 [,col2]]