gpt4 book ai didi

Mysql:当其中一行以相同的字符串开头时如何找到不同的其他行值

转载 作者:行者123 更新时间:2023-11-28 23:58:29 27 4
gpt4 key购买 nike

我有一个名为 entries 的 mysql 表。这些行是:memberidtitleadded

使用 PhpMyAdmin,在最新的 100 行中(按:添加、降序排序),我需要:

  • 仅适用于 title 以相同的 20 个字符串开头的情况(字符串的结尾不同,而不是开头)
  • title 包含相同的开头时,就该生成一个列表,其中包含 (1) 完整的 title,(2) id 和 (3) 使用此标题的成员 名称。
  • 此后将用肉眼检查该列表,因此有没有关于列表外观的严格规定,只要它有效很好。最终,这将更像是最新的 1000 个条目,因此肉眼需要这种预过滤。

我自己能做的最好的事情(抱歉!)是输出每个条目的通用列表,然后用我的眼睛手动搜索 title 以相同字符开头的情况:

SELECT title, member FROM (
SELECT * FROM entries
ORDER BY added
DESC
LIMIT 0, 100
) AS olitest
ORDER BY title

从我以前写的太烂的一个stackoverflow问题,提了两个不完整的建议,可能是一个开始

那个不会给 memberid 并且不限于最新的 100 行

select left(e.title, 20), group_concat(title) as titles
from entries e
group by left(e.title, 20)
having count(*) > 1;

本质上,它显示标题的总行数。

select left(e.title, 20), count(*), max(title) 
from entries e
group by left(e.title, 20)
having count(*) > 1;

更多的是超出我的技能,唉。您知道如何做到这一点吗?

最佳答案

我将此作为答案发布,但我认为它不会让您获得最终结果。我这样做是为了格式和可读性,因为评论不提供格式。

我一直在处理与您的需求类似的查询,但运气不佳,但这可能会让您更接近。

CTE 是一个公用表表达式。它建立了一个临时表来处理

WITH CTE (left(title, 20), DuplicateCount)
AS
(
SELECT left(title, 20),
ROW_NUMBER() OVER(PARTITION BY left(title, 20) ORDER BY ID) AS DuplicateCount
FROM entries
)
SELECT *
FROM CTE
WHERE DuplicateCount > 1

这应该会为您提供一个输出,其中 DuplicateCount 显示在具有匹配名称的标题旁边。当 DuplicateCount 大于 1 时,您将需要完成您的工作。

如果这些都不起作用,试试这个......

 SELECT left(title, 20),
ROW_NUMBER() OVER(PARTITION BY left(title, 20) ORDER BY ID) AS DuplicateCount
FROM entries

关于Mysql:当其中一行以相同的字符串开头时如何找到不同的其他行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782613/

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