Выберите надлежащие столбцы из оператора JOIN

У меня есть две таблицы: table1, table2. Table1 имеет 10 столбцов, table2 имеет 2 столбца.

SELECT * FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.ID = T2.ID

Я хочу выбрать все столбцы из table1 и только 1 столбец от table2. Действительно ли возможно сделать это, не перечисляя все столбцы от table1?

15
задан Daniel Vassallo 5 April 2010 в 08:33
поделиться

3 ответа

Да, вы можете сделать следующее:

SELECT t1.*, t2.my_col FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.ID = T2.ID
15
ответ дан 1 December 2019 в 03:43
поделиться

Используйте table1. * вместо всех столбцов table1;)

{{1} }
-2
ответ дан 1 December 2019 в 03:43
поделиться

Даже если вы можете сделать t1. *, T2.col1 , я бы не рекомендовал его в производственном коде.

Я бы никогда никогда не использовал SELECT * в производстве - почему?

  • вы говорите SQL Server, чтобы он получил все столбцы - вы действительно, действительно нужны все они?
  • если не указывать имена столбцов, SQL Server должен выяснить это сам - он должен обратиться к словарю данных, чтобы выяснить, какие столбцы присутствуют, что немного снижает производительность
  • самое главное: вы не знаете, что получаете в ответ. Внезапно таблица меняется, добавляются еще один или два столбца. Если у вас есть код, который, например, последовательность или количество столбцов в таблице без явной проверки этого, ваш код может тормозить

Моя рекомендация для производственного кода: всегда (без исключений!) укажите именно те столбцы, которые вам действительно нужны - и даже если вам нужны все они, изложите это подробно. Меньше сюрпризов, меньше ошибок, за которыми нужно охотиться, если что-нибудь изменится в базовой таблице.

7
ответ дан 1 December 2019 в 03:43
поделиться