`SELECT field AS`在2个表之间使用UNION会导致错误#1064

时间:2013-03-16 09:39:55

标签: mysql sql select

考虑以下问题:

SELECT x.* FROM
(
    (
        SELECT (id,
            insertuserid AS transaction_user_id,
            (user_price * (-1)) AS amount,
            "INVOICE" AS transaction_type,
            insertdatetime
            )
        FROM invoice
        WHERE transaction_user_id = 4
    )
    UNION
    (
        SELECT (id,
            user_id AS transaction_user_id,
            amount,
            "PAYMENT" AS transaction_type,
            insertdatetime)
        FROM payment
        WHERE user_id = 4
    )
)
AS x
ORDER BY x.insertdatetime

它看到的第一个AS上的查询错误。

即使我在联盟的第一个insertuserid AS transaction_user_id中将insertuserid更改为SELECT,也会在下一行的第二个AS上出现错误:{{1} } !!!

错误讯息:

(user_price * (-1)) AS amount

谢谢

1 个答案:

答案 0 :(得分:4)

只需删除SELECT子句

上的括号即可
SELECT  x.* 
FROM
    (
        SELECT  id,
                insertuserid AS transaction_user_id,
                user_price * (-1) AS amount,
                'INVOICE' AS transaction_type,
                insertdatetime
        FROM    invoice
        WHERE   transaction_user_id = 4
        UNION
        SELECT  id,
                user_id AS transaction_user_id,
                amount,
                'PAYMENT' AS transaction_type,
                insertdatetime
        FROM    payment
        WHERE   user_id = 4
    ) AS x
ORDER BY x.insertdatetime