Как правильно ВЫБРАТЬ из подзапроса приведенную таблицу

#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. Спасибо, потрясающе