Mysql выберите заявление с подстановочным знаком - PullRequest
2 голосов
/ 20 февраля 2011

У меня есть таблица mysql EMPLOYEE

+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| id                | int(11)      | YES  |     | NULL    |       |
| name              | varchar(30)  | YES  |     | NULL    |       |
| age               | int(11)      | YES  |     | NULL    |       |
| start_salary      | int(11)      | YES  |     | NULL    |       |
| current_salary    | int(11)      | YES  |     | NULL    |       |
| address           | varchar(255) | YES  |     | NULL    |       |
| designation       | varchar(10)  | YES  |     | NULL    |       |
+-======------------+--------------+------+-----+---------+-------+

Теперь я хотел бы сделать оператор select, например

SELECT (current_salary/start_salary) appraisal, * from EMPLOYEE;

Но приведенный выше оператор недопустим в mysql.Это не домашняя работа, а дурачок, например.Можно ли иметь дополнительный столбец вместе со всеми существующими столбцами таблицы, используя * в качестве подстановочного оператора?

Какой лучший способ сделать что-то подобное?

Ответы [ 2 ]

4 голосов
/ 20 февраля 2011

Ответ Ричарда правильный, но вы МОЖЕТЕ использовать * в качестве последнего столбца!

Чтобы указать , где появятся столбцы * (вместо первого), все, что вам нужно, это дать таблице псевдоним , а затем использовать alias.* вот так:

SELECT (E.current_salary/E.start_salary) appraisal, E.* from EMPLOYEE E;

В этом случае я использовал E в качестве псевдонима, но это может быть что угодно (emp, EMP).

E. в current_salary и start_salary не является обязательным, но настоятельно рекомендуется, когда вы начнете использовать псевдоним в своих запросах. В запросах, использующих многострочные таблицы (INNER / LEFT / RIGHT JOIN), псевдоним необходим, если две или более таблиц имеют одинаковое имя столбца (в противном случае, как MySql узнает, из какой таблицы вы хотите получить name или ID?)

Обратите внимание, что вы можете использовать alias.* только для таблиц, имена столбцов которых уникальны в запросе (т. Е. Ни одна другая таблица из того же запроса не имеет столбцы с одинаковыми именами)

И * (без псевдонима, означающего «все столбцы из всех таблиц») допускается, только если все имена столбцов из всех таблиц уникальны.

4 голосов
/ 20 февраля 2011

Да, абсолютно.Трюк прост, просто ставьте подстановочный знак FIRST.
Вот и все!

SELECT *, (current_salary/start_salary) appraisal from EMPLOYEE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...