有没有一种方法可以在不使用Count和Group By的情况下确定元素在列中是否至少存在3次?
编辑:答案是预期的SQL(mysql或oracle11g)在其中
仅使用SELECT,FROM,WHERE和JOINS。当然,所有的逻辑运算符和量词都是RELATIONAL CALCULUS WITH
TUPLES根本没有任何工具。
元组示例:
{t:{name} | s:{姓名,工资}(雇员s.wage = 50.000∧t.name = s.name)}
在这里,使用元组的关系演算的局限性显而易见。
没有CTE,没有分组依据,没有行工具,没有区别,没有计数,没有视图,没有创建,没有插入,没有更改。这些出色的SQL工具都没有。
我不想使用Count和Group By的原因是因为我将使用Tuples将其带到关系演算中,后者不允许使用这些工具。
举个例子:
假设有一个表ORDER(Id_article,Id_Provider),其中两个ID都是外键。
查询:获取订购至少3次的所有文章。
令表ORDER为:
Id_Article Id_Provider
1 A
1 B
1 B
2 C
2 C
3 A
查询的结果应仅为元素1,因为它是Id_Article中的3倍。
最佳答案
下来知道这是否回答了你的问题。但是oracle有一个row_number
功能
在这种情况下,partition_by
重新开始对每篇文章进行计数。
SQL Fiddle Demo
WITH CTE AS (
SELECT "Id_Article",
"Id_Provider",
ROW_NUMBER() OVER
(PARTITION BY "Id_Article" ORDER BY "Id_Provider") AS rn
FROM Table1
)
SELECT DISTINCT "Id_Article"
FROM CTE
WHERE rn >= 3;
关于mysql - 元素重复至少3次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32556972/