gpt4 book ai didi

sql - 如何在一列中获取不同的值,而在另一列中获取多个可能的值?

转载 作者:行者123 更新时间:2023-11-29 11:48:43 25 4
gpt4 key购买 nike

我正在尝试解决这是否可能,让我举个例子。如果您能指导我正确的方向,那就太好了。

Table = names
--------------------
Marks & Spencer
Marks & Spencer
marks & spencer

我想做的是返回不同的值,其中我已转换所有 & 符号并更改为大写。

所以我的查询是:

SELECT regexp_replace(UPPER(name), '&(amp;)*|\\+', '&', 'gi') AS name FROM names GROUP BY names;

但是,我想做的也是返回原始值之一,哪一个并不重要,但我只想返回 1 行,比如

Result
----------------
name original
------------------------
MARKS&SPENCER Marks & Spencer

这可能吗?因为目前,我得到的返回是这样的:

Result
----------------
name original
------------------------
MARKS&SPENCER Marks & Spencer
MARKS&SPENCER Marks & Spencer
MARKS&SPENCER marks & spencer

感谢您的阅读,非常感谢您的帮助。

==========

编辑

我用来获得上述结果的查询是:

SELECT names.name, T.result FROM names 
INNER JOIN
(
SELECT DISTINCT regexp_replace(UPPER(name), '&(amp;)*|\\+', '&', 'gi') AS result FROM names
) AS T
ON regexp_replace(UPPER(name), '&(amp;)*|\\+', '&', 'gi')=T.result
GROUP BY T.result, names.name
ORDER BY T.result ASC

顺便说一句,我正在使用 PostgreSQL,它可以比 MySQL 做更多的事情,以防发生变化?

最佳答案

您需要按新名称分组以仅获得一行,并且由于您不关心出现的是哪个原始名称,因此可以使用 min 之类的内容对其进行聚合:

SELECT min(name),regexp_replace(UPPER(name), '&(amp;)*|\\+', '&', 'gi') AS name
FROM names
GROUP BY regexp_replace(UPPER(name), '&(amp;)*|\\+', '&', 'gi')

关于sql - 如何在一列中获取不同的值,而在另一列中获取多个可能的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928034/

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