在下面的查询中,cnt的值仅基于所选的行数来计算。 (ID <10)
我希望它对整个表进行计数,并且仅根据整个表的计数插入该表的前10行。
因此,如果约翰·史密斯(加利福尼亚州圣地亚哥的圣地亚哥)出现在第11行和第55行,则需要将其考虑在内。
我尝试移动WHERE子句,但这给出了错误。
INSERT INTO matchNewCounts(`uniqueidentifier`, `fullName`, `first`,
`middle`, `last`, `counter`, `city`, `state`, `cit2`, `state2` , `cnt`)
SELECT `uniqueidentifier`, `fullName`, `first`, `middle`, `last`,
`counter`,`city`, `state`, `cit2`, `state2`, COUNT(*) as cnt
FROM matchNewIndex
where id < 10
GROUP BY `first`, `last`, `city`, `state`
样本: 第<10
行John Smith加利福尼亚圣地亚哥圣地亚哥
John Smith加利福尼亚圣地亚哥圣地亚哥
行> 10
John Smith加利福尼亚圣地亚哥圣地亚哥
预期结果的计数必须为3。
答案 0 :(得分:0)
您应该使用LIMIT而不是WHERE
INSERT INTO matchNewCounts(`uniqueidentifier`, `fullName`, `first`,
`middle`, `last`, `counter`, `city`, `state`, `cit2`, `state2` , `cnt`)
SELECT `uniqueidentifier`, `fullName`, `first`, `middle`, `last`,
`counter`,`city`, `state`, `cit2`, `state2`, COUNT(*) as cnt
FROM matchNewIndex
GROUP BY `first`, `last`, `city`, `state`
LIMIT 10
答案 1 :(得分:0)
自此,您仅需要基于id的前10行。您的查询应包含HAVING
子句。因此,如果names
的顺序不正确,则结果将根据name
的顺序而不是ID生成。
INSERT INTO matchNewCounts(`uniqueidentifier`, `fullName`, `first`,
`middle`, `last`, `counter`, `city`, `state`, `cit2`, `state2` , `cnt`)
SELECT `uniqueidentifier`, `fullName`, `first`, `middle`, `last`,
`counter`,`city`, `state`, `cit2`, `state2`, COUNT(*) as cnt
FROM matchNewIndex
GROUP BY `first`, `last`, `city`, `state`
HAVING id<10;