我有一个数据集 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
以及 c
列。例如,值 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
在左边,怎么会有更多的行呢?
任何方向都行。
附言:我读了其他关于同一问题的帖子,但是他们得出这个错误的方式和我现在所做的不同,那里的解决方案对我帮助不大。
1条答案
按热度按时间eh57zj3b1#
我想这里只需要三个连接,每个频率列对应一个
train
表格:编辑:
如果您想采用当前的方法,那么可以采用以下方法:
我说可能,因为这些子查询必须始终返回单个值以避免错误。即使这样做有效,我给出的连接方法也应该比它更好。