有没有办法通过FOR LOOP
-SELECT
查询?(1)
我之所以问,是因为我不知道如何为表的每一行提交SELECT
来自表的一些数据的单个查询集合(请参阅UPDATE示例)。是的,我们确实可以,但如果它不存在怎么办?或者如何请求来自 的所有行,每个都与来自 的特定相关行连接。因此,似乎在完美世界中,我们必须能够通过适当的 SQL 命令(R)遍历表。也许,会有帮助吗?t_2
t_1
GROUP BY
UNIQUE INDEX
t_1
t_2
ANY(...)
在这里,我试图prop
在 table 中列的所有值中找到最大重复次数t
。t.groupby(prop).max()
即我尝试在 SQL 查询(Q1)中执行类似于 Pandas 的操作:
SELECT Max(C) FROM (SELECT Count(t_1.prop) AS C
FROM t AS t_1
WHERE t_1.prop = ANY (SELECT prop
FROM t AS t_2));
但它只会抛出错误:
每个派生表都必须有自己的别名。
我不明白这个错误。为什么会这样?(2)
是的,我们可以value_counts(...)
通过使用SELECT prop, COUNT() GROUP BY prop
. SELECT
但是出于原因(R),我想以一种“循环”的方式保持在“单个非分组查询模式”中。
此子查询试图模仿 Pandas' t.value_counts(...)
) (Q2):
SELECT Count(t_1.prop) AS C FROM t AS t_1 WHERE t_1.prop = ANY(SELECT prop FROM t AS t_2)
结果为6,这只是t中的行数。结果是合乎逻辑的。-ANY
子句简单地TRUE
为每一行返回,一旦收集了所有行,就COUNT(...)
简单地返回收集的(即所有)行的数量。
顺便说一句,在我看来,在“完整”的先前SELECT
查询(Q1)中应该返回那个6。
那么,主要问题是如何循环进入这样的查询?有这样的机会吗?
更新
感谢Luuk ,问题(2)的答案在这里找到。我刚刚为 (...) 子查询分配了一个别名,它成功了。当然,我得到了6。因此,问题(1)仍然不清楚。SELECT Max(C) FROM (...) AS sq
我也尝试过以这种方式进行迭代(Q3):
SELECT (SELECT prop_2 FROM t_2 WHERE t_2.prop_1 = t_1.prop) AS isq FROM t_1;
这里 int_2
prop_2
与prop_1
(又名prop
in t_1
)是多对一的。因此,在整个过程中,我们的isq
(内部选择查询)prop_2
为每个prop
值返回几个(行)值t_1
。这就是(Q3)抛出错误的原因:
子查询返回超过 1 行。再次,合乎逻辑。因此,我无法在单个非分组查询中创建循环
SELECT
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句