我一直在查看一些旧的Ingress SQL代码,并且对子查询末尾的“> 1”(例如:
)有点好奇SELECT count(*)
FROM table1 t
WHERE t.col1 = 'TEST'
AND t.col2 = 'TEST123'
AND
(SELECT count(*)
FROM table2 ta
JOIN table3 tb ON tb.id = ta.id
WHERE t.col1 = ta.col1
AND tb.col3 IS NULL) > 1 ;
我对大于1的函数感到困惑-这是否仅意味着如果子查询的返回值大于1则将其包括在AND语句中?还是我完全错了?用Google搜索,但找不到Ingress的很多结果!
干杯!
答案 0 :(得分:1)
您是正确的。这是一个标量子查询。这样的子查询返回一列,最多返回一行。该值在查询中被视为标量值。
在这种情况下,它是对匹配行进行计数的聚合查询。因此,此逻辑至少需要两个匹配项。