ASP查询语句以下情况怎么写:列出产品表中所有重复产品的信息?(ASP+Access)

CP表,结构如下
ID 产品名称 型号 单位 单价
1 镀锌钢管 DN50 m 25.2
2 焊接钢管 DN20 m 12.5
3 焊接钢管 DN65 m 33.6
4 镀锌钢管 DN50 m 25.2
5 镀锌钢管 DN100 m 50.69
......上万条,不知道有多少钟产品重复这4个字段

SQL语句要求把 产品名称、型号、单位、单价4个字段都重复的值查出来(如上表中的第1、4重复),谢谢!

SELECT 产品名称, 型号, 单位, 单价, COUNT(*)
FROM CP表
GROUP BY 产品名称, 型号, 单位, 单价
HAVING COUNT(*) > 1;
这条语句首先通过GROUP BY语句分组,分组的字段是 产品名称、型号、单位、单价 这四个字段。然后使用HAVING语句查询每组数据中出现次数大于1的记录,从而得到所有重复产品的信息。追问

怎样删除这些多余的重复记录,只留下一条

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-02-11
您可以使用以下SQL语句实现查询:
SELECT 产品名称, COUNT(*)
FROM 产品表
GROUP BY 产品名称
HAVING COUNT(*) > 1;
这条语句会查询出所有在产品表中出现次数大于1次的产品信息。
在ASP页面中,您可以使用ADO对象执行这条SQL语句,并将结果显示在页面上:
set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("数据库.mdb")
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT 产品名称, COUNT(*) FROM 产品表 GROUP BY 产品名称 HAVING COUNT(*) > 1", conn
if not rs.EOF then
while not rs.EOF
Response.Write rs("产品名称") & " " & rs("COUNT(*)") & "<br>"
rs.MoveNext
wend
else
Response.Write "没有重复的产品信息"
end if
rs.Close
conn.Close
set rs = nothing
set conn = nothing追问

怎样删除这些多余的重复记录,只留下一条

追答

您可以使用以下SQL语句来删除这些多余的重复记录:
WITH cte AS (
SELECT MIN(ID) AS MinID, 产品名称, 型号, 单位, 单价
FROM CP表
GROUP BY 产品名称, 型号, 单位, 单价
HAVING COUNT(*) > 1
)
DELETE FROM CP表
WHERE (产品名称, 型号, 单位, 单价) IN (
SELECT 产品名称, 型号, 单位, 单价
FROM cte
) AND ID NOT IN (
SELECT MinID
FROM cte
);
这段代码使用了 Common Table Expression (CTE) 和 INNER JOIN 语句来删除多余的重复记录。首先,通过 CTE 来获取重复记录中每一组记录的最小 ID 值。然后,再使用 INNER JOIN 语句来进一步筛选出要删除的记录。最后,通过 DELETE 语句来删除这些记录。

追问

WITH和DELETE ,完整的删除语句要怎么写?

本回答被提问者采纳
第2个回答  2023-02-11
下面是一个 ASP 中的 SQL 查询示例,它列出了产品表中所有重复产品的信息:
数据库复制代码SELECT product_name, COUNT(product_name)FROM productsGROUP BY product_nameHAVING COUNT(product_name) > 1

此查询将返回在产品表中多次出现的所有产品名称的列表,以及每个产品名称出现的次数。该GROUP BY子句按产品名称对记录进行分组,并且该HAVING子句过滤结果以仅显示出现多次的产品名称(即COUNT(product_name) > 1)。
请注意,这只是编写此查询的一种可能方式,具体语法可能因您使用的特定 ASP 和 SQL 环境而异。
第3个回答  2023-02-11
SELECT * FROM 产品表 WHERE 产品名称 IN (SELECT 产品名称 FROM 产品表 GROUP BY 产品名称 HAVING COUNT(*) > 1)
第4个回答  2023-02-11
选择专业名称,专业价格,专业类型
从产品
专家名称,专家价格,专家类型
有计数(*)1
相似回答