0
我在下面的所有mysql語句都正常工作,直到我添加(sub_total - discount_total) AS total,
。如何在SELECT中使用別名
我猜這是因爲我打電話給尚未定義的別名(sub_total
和discount_total
)。
如何定義別名,因此不會引發錯誤#1054 - Unknown column 'sub_total' in 'field list'
SELECT SQL_CALC_FOUND_ROWS
`bookings`.`id`,
`bookings`.`client_id`,
`bookings`.`vehicle_id`,
`bookings`.`vehicle_hire`,
(insurance_driver_1 + insurance_driver_2 + insurance_driver_3) AS insurance_total,
`bookings`.`bedding_qty`,
`bookings`.`bedding_price`,
`bookings`.`promo_discount`,
`bookings`.`promo_is_percent`,
`bookings`.`promo_code`,
(vehicle_hire + insurance_driver_1 + insurance_driver_2 + insurance_driver_3) + (bedding_qty * bedding_price) AS sub_total,
CASE
WHEN promo_is_percent = 1
THEN (((vehicle_hire + insurance_driver_1 + insurance_driver_2 + insurance_driver_3) + (bedding_qty * bedding_price))/100) * promo_discount
WHEN promo_is_percent = 0
THEN promo_discount
END as discount_total,
(sub_total - discount_total) AS total
FROM `bookings`
WHERE `bookings`.`status` = 'Quote'
ORDER BY `bookings`.`id` desc
LIMIT 0, 10
感謝
更新
工作下面的例子,
`SELECT SQL_CALC_FOUND_ROWS *,
(sub_total - discount_total) AS total
FROM (
SELECT
`bookings`.`id`,
`bookings`.`client_id`,
`bookings`.`vehicle_id`,
`bookings`.`vehicle_hire`,
(insurance_driver_1 + insurance_driver_2 + insurance_driver_3) AS insurance_total,
`bookings`.`bedding_qty`,
`bookings`.`bedding_price`,
`bookings`.`promo_discount`,
`bookings`.`promo_is_percent`,
`bookings`.`promo_code`,
(vehicle_hire + insurance_driver_1 + insurance_driver_2 + insurance_driver_3) + (bedding_qty * bedding_price) AS sub_total,
CASE
WHEN promo_is_percent = 1
THEN (((vehicle_hire + insurance_driver_1 + insurance_driver_2 + insurance_driver_3) + (bedding_qty * bedding_price))/100) * promo_discount
WHEN promo_is_percent = 0
THEN promo_discount
END as discount_total
FROM `bookings`
WHERE `bookings`.`status` = 'Quote'
) AS src
ORDER BY src.`id` desc
LIMIT 0, 10`
謝謝!我會列出總計,只想學習如何做更多的事情。另外'SQL_CALC_FOUND_ROWS'應該放在第一個'SELECT'中。# – arbme
@arbme ok很酷,我工作在mysql上已經有一段時間了,但是我知道它的語法不會和mssql差別太大 – ermagana