#mysql #sql
Вопрос:
Я пытаюсь выполнить a SELECT * FROM WHERE result.usd_equivalent > 10
в таблице, которая задана моим подзапросом. Я новичок в этом и не уверен, правильно ли я это пишу, но приведенный ниже запрос выдает сообщение об ошибке Error Code: 1060. Duplicate column name 'currency'
. Я также установил псевдоним подзапроса как result
:
SELECT * FROM
(
SELECT *, t.amount / POWER(10, cd.exponent) * fx.rate AS "usd_equivalent"
FROM new_schema.transactions t
JOIN new_schema.fx_rates fx
ON t.currency = fx.ccy
JOIN new_schema.currency_details cd
ON t.currency = cd.currency
WHERE fx.base_ccy = "USD"
) result
WHERE result.usd_equivalent > 10;`
Я просто хочу извлечь строки в соответствии с моим WHERE
предложением из данной таблицы. Как я могу сделать это правильно?
Комментарии:
1. Забудьте об
SELECT *
этом , перечислите столбцы один за другим.
Ответ №1:
SELECT *
В вашем подзапросе выбирается столбец с именем currency
из обоих new_schema.transactions
и new_schema.currency_details
, таким образом, возникает ошибка.
Вам нужно либо выбрать только один экземпляр currency
столбца из одной из двух таблиц, либо переименовать оба столбца под разными именами.
Ответ №2:
SELECT *, t.amount / POWER(10, cd.exponent) * fx.rate AS usd_equivalent
FROM new_schema.transactions t
JOIN new_schema.fx_rates fx ON t.currency = fx.ccy
JOIN new_schema.currency_details cd ON t.currency = cd.currency
WHERE fx.base_ccy = "USD"
HAVING usd_equivalent > 10;
Комментарии:
1. Спасибо, потрясающе