gpt4 book ai didi

mysql连接和插入语句

转载 作者:行者123 更新时间:2023-11-28 23:13:34 25 4
gpt4 key购买 nike

我使用左连接创建了一个 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 的数据。

first query execute result

但是,如果我检查整个 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;

其他值出来。

second query execute result

第一个查询语句工作正常,第二个查询语句显示无效值。

如何使用第二条查询语句得到第一条查询语句的结果?

最佳答案

使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com