У меня есть набор данных train
, который структурирован следующим образом:
+---+---+---+----------+----------+----------+
| a| b| c|aml_freq_a|aml_freq_b|aml_freq_c|
+---+---+---+----------+----------+----------+
| v| l| l| 56| 42| 29|
| u| g| l| 47| 46| 29|
| s| g| l| 28| 46| 29|
| v| m| l| 56| 33| 29|
| h| m| l| 44| 33| 29|
+---+---+---+----------+----------+----------+
Столбцы aml_freq_a
, aml_freq_b
и aml_freq_c
являются частотами соответствующих записей в a, b
и * 1009.* столбец.Например, значение 56
в aml_freq_a
- это, в основном, число / частота числа случаев, когда v
произошло в столбце a
.Аналогично для b
и c
.
У меня есть другой набор данных, называемый test
, который содержит только столбцы a, b
и c
,
+---+---+---+
| a| b| c|
+---+---+---+
| w| j| c|
| a| g| w|
| s| d| i|
| g| j| r|
| r| b| u|
+---+---+---+
Мне нужно добавить aml_freq_a
, aml_freq_b
и aml_freq_c
столбцы к нему.Для этого я использовал подзапросы, которые соединяют test
и train
в столбце a
, а затем выбирают столбец aml_freq_a
.Я написал еще два подзапроса для b
и c
.Вот так выглядит мой запрос
SELECT test.*,
(SELECT aml_freq_a
FROM test
LEFT JOIN train
ON test.a = train.a),
(SELECT aml_freq_b
FROM test
LEFT JOIN train
ON test.b = train.b),
(SELECT aml_freq_c
FROM test
LEFT JOIN train
ON test.c = train.c)
FROM test
Но когда я его запускаю, я получаю следующую ошибку
more than one row returned by a subquery used as an expression
Я не понял эту ошибку.Так как я делаю left join
с test
слева, как может быть больше строк?
Любое направление было бы здорово.
PS: я читал другоесообщения о той же самой проблеме, но способ, которым они достигли этой ошибки, отличается от того, что я делаю, и решения там не очень помогли мне.