作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用左连接创建了一个 View 来查看重复 ip 的数量。
在这个 View 中
SELECT
a.id,
b.id,
COUNT (b.id),
a.ip
FROM
`VIEW` AS a
LEFT JOIN
`VIEW` AS b on a.ip = b.ip
WHERE
a.id = 298
GROUP BY
b.id;
当我执行这个查询时,我得到了我想要的一个 ID 的数据。
但是,如果我检查整个 id 中重复 ip 的数量
并执行以下查询将其存储在表中。
INSERT
INTO
TABLE
SELECT
a.id,
b.id,
COUNT (b.id),
a.ip
FROM
`VIEW` AS a
LEFT JOIN
`VIEW` AS a.ip = b.ip
WHERE
a.id IN
(
SELECT DISTINCT
id
FROM
`VIEW`)
GROUP BY
b.id;
其他值出来。
第一个查询语句工作正常,第二个查询语句显示无效值。
如何使用第二条查询语句得到第一条查询语句的结果?
最佳答案
使用 GROUP BY a.id, b.id
这样您就可以为每个加入的 a.id
获得单独的计数。
这里也没有理由使用LEFT JOIN
。由于您正在将 View 与自身连接起来,因此总会有一个匹配的行。只需使用普通的 INNER JOIN
。
WHERE
子句完全无效。 id not 怎么会出现在同一 View 的不同 id 列表中?去掉那个子句。
还有一个语法错误:
JOIN `VIEW` AS a.ip = b.ip
应该是:
JOIN `VIEW` AS b ON a.ip = b.ip
正确的查询应该是:
INSERT
INTO
TABLE
SELECT
a.id,
b.id,
COUNT(*),
a.ip
FROM
`VIEW` AS a
JOIN
`VIEW` AS b ON a.ip = b.ip
GROUP BY
a.id, b.id;
关于mysql连接和插入语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44881067/
我是一名优秀的程序员,十分优秀!