我有一个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 (current_salary/start_salary) appraisal, * from EMPLOYEE;
但是上面的语句在mysql中无效。这不是家庭作业,而是假人。是否可以使用*作为通配符运算符,使用额外的列以及表的所有现有列?
做这样的事情的最佳方式是什么?
答案 0 :(得分:4)
绝对是的。诀窍很简单,只需把通配符放在第一位 就是这样!
SELECT *, (current_salary/start_salary) appraisal from EMPLOYEE;
答案 1 :(得分:4)
理查德的答案是正确的,但你 CAN 也使用*作为最后一栏!
要指定 * 列将显示(而不是第一个),您只需为表格提供别名,然后使用alias.*
,如下所示:
SELECT (E.current_salary/E.start_salary) appraisal, E.* from EMPLOYEE E;
在这种情况下,我使用E作为别名,但它可以是任何东西(emp,EMP)。
current_salary和start_salary中的 E. 是可选的,但强烈建议您在查询中开始使用别名。在使用多表(INNER / LEFT / RIGHT JOIN)的查询中,如果两个或多个表具有相同的列名,则需要别名(否则,MySql如何知道您想要哪个表name
或ID
来自?)
请注意,对于列名在查询中唯一的表,您只能使用alias.*
(即,同一查询中没有其他表具有相同名称的列)
并且*(没有任何别名,意思是“所有表中的所有列”)仅在所有表中的所有列名都是唯一的时才允许。