请教查询MYSQL,最大连续数的SQL写法

请教查询MYSQL,最大连续数的SQL写法,第1张

下面SQL代码假设表名为T,运行时请将表名T更改为实际表名,其它地方请不要动。这段代码已经实测通过。上机试试吧! SELECT T.* FROM T INNER JOIN (SELECT NAME FROM (SELECT NAME,COUNT(*) AS QTY FROM T GROUP BY NAME)A WHERE A.QTY>1)B ON T.NAME=B.NAME ORDER BY T.NAME,T.ID 说明:这段代码看上去虽然比较复杂,尽管有其它比较简单的写法,但是我觉得这个写法在表数据量较大时效率会更高一些。 再给一个稍微简单的写法,其效率也差不多。 SELECT T.* FROM T, (SELECT NAME FROM T GROUP BY NAME HAVING COUNT(*)>1)A WHERE T.NAME=A.NAME ORDER BY T.NAME, T.ID你的问题“查询一张表中 字段A 相同的记录数大于1条的记录” -- 我认为有一点笔误,因为在你提供的表中没有叫做“A”的字段,所以我上面的答案是基于问题“查询一张表中 字段NAME 相同的记录数大于1条的记录”而做出的。 如果你问题的实际要求是“查询一张表中 字段NAME 等于A,且其记录数大于1条的记录”那么只要对我上面的SQL语句加一个“Where” *** 作符就可以解决。以第二个SQL语句为例,这样写: SELECT T.* FROM T, (SELECT NAME FROM T WHER NAME='A' GROUP BY NAME HAVING COUNT(*)>1)A WHERE T.NAME=A.NAME ORDER BY T.NAME, T.ID 尊敬的“冰风舞雨”先生如果你觉得我的回答无聊,请投诉并删除本人的作答。作为一个认真的答题者,总是希望提问者能给一个回复,不管评价是好还是坏。~

可以用 CONCAT把查询语言与变量连接起来再执行,参考如下代码。

DELIMITER //

CREATE PROCEDURE GetItems()

BEGIN

SELECT @total := count(id) FROM items

SET @sql = CONCAT('SELECT id, title FROM items LIMIT 0,', CEIL(@toal/2))

PREPARE stmt FROM @sql

EXECUTE stmt

END //

DELIMITER

希望这个思路对你有帮助,可以将limit后面设置为变量!

其一:给连续相同的type编号,即大 1 大2 大3 小1 小2……,这个需要用到用户变量

其二:编号后进行条件过滤

其三:分组统计

这三个可以写成一个SQL!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7467296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存