MySQL在执行子查询的时候需要加上as 别名

在MySql和SQL Server中使用子查询时,必须给子查询语言取一个别名。
例如直接使用
select count(*) from (select * from table_1)
会提示错误,在MySql中提示错误:
Every derived table must have its own alias
在SQL Server中提示错误:
Incorrect syntax near ')'.

正确的用法应该是
select count(*) from (select * from table_1) table_2

<select id="getUser" parameterType="map"
    resultType="dd.client.model.Users">
    SELECT * FROM
       
    (SELECT
a.ID AS ID,
a.CUSTOMER_ID AS CUSTOMER_ID,
a.ACCOUNT AS ACCOUNT,
a.PASSWORD AS PASSWORD,
a.NAME AS NAME,
a.SERVICE_END_TIME AS SERVICE_END_TIME,
a.LAST_LOGIN_TIME AS LAST_LOGIN_TIME,
a.LOGIN_FAIL_TIMES AS LOGIN_FAIL_TIMES,
a.IS_ENABLE AS IS_ENABLE,
a.ISDEL AS ISDEL,
a.CREATE_TIME AS CREATE_TIME,
a.CREATE_ID AS CREATE_ID,
a.UPDATE_TIME AS UPDATE_TIME,
a.UPDATE_ID AS UPDATE_ID,
a.MOBILE AS MOBILE,
a.EMAIL AS EMAIL,
a.SEND_MOBILE AS SEND_MOBILE,
a.SEND_EMAIL AS SEND_EMAIL,
a.IS_LIMITED AS IS_LIMITED,
a.LMT_IP AS LMT_IP,
a.LMT_START_TIME AS LMT_START_TIME,
a.LMT_END_TIME AS LMT_END_TIME,
a.LMT_WEEK_TIME AS LMT_WEEK_TIME,
a.IS_CUSTOMERGROUP AS IS_CUSTOMERGROUP,
a.IS_ADMIN AS IS_ADMIN,
IFNULL(b.CUSTOMER_NAME,'0') AS customer_name 
<!-- b.SYSTEM_NAME -->
FROM users a LEFT JOIN customer b 
ON a.CUSTOMER_ID = b.ID
) AS v_users
        
    WHERE CUSTOMER_NAME = #{customerName}
    AND ACCOUNT = #{userName}
  </select>

AS  v_users 是必须的,即使外层查询没有用到,也必须给子查询起一个别名,否则无法执行

猜你喜欢

转载自blog.csdn.net/tony_yang6/article/details/108202246