我正在寻找一种方法来计算我的sql查询省略了多少结果(我正在使用Sqlite):
SELECT id FROM users GROUP BY x, y, email;
这个查询返回121 id(50 000),很高兴知道每对(x,y)省略了多少id。
有可能吗?
感谢您的帮助,
编辑:
示例:
+--+-----+----+-------------+
|ID|x |y |email |
+--+-----+----+-------------+
|1 |48.86|2.34|john@test.com|
+--+-----+----+-------------+
|2 |48.86|2.34|phil@test.com|
+--+-----+----+-------------+
|3 |40.85|2.31|john@test.com|
+--+-----+----+-------------+
|4 |48.86|2.34|phil@test.com|
+--+-----+----+-------------+
|5 |40.85|2.31|john@test.com|
+--+-----+----+-------------+
|6 |48.86|2.34|phil@test.com|
+--+-----+----+-------------+
查询:
SELECT id FROM users GROUP BY x, y, email;
结果:
+--+
|id|
+--+
|1 |
+--+
|2 |
+--+
|3 |
+--+
因为:id 4和id 6具有相同的x,y,电子邮件比id 2和5与3相同。
我需要以最快的方式知道:
id 1 -> 0 omitted
id 2 -> 2 omitted (id 4 and id 6 had same x, y, email)
id 3 -> 1 omitted (id 3)
答案 0 :(得分:3)
SELECT id, COUNT(*) -1 AS omitted FROM users GROUP BY x, y, email;
...假设您确实想要“知道每个元组(x, y, email)
已省略了多少。
答案 1 :(得分:1)
你可以试试这个:
SELECT COUNT(*)
FROM
(
SELECT *
FROM users
MINUS
SELECT id
FROM users
);
这会显示所有记录减去您选择的记录。希望这会有所帮助。
答案 2 :(得分:0)
您可以计算数据库的总大小,然后减去结果大小。根据您的数据库的大小,也可能比其他方式更快。</ p>