如何选择不同的子字符串字段或删除重复的字段

时间:2016-07-01 07:50:53

标签: php mysql sql

示例数据:

fold/build

目前,我所做的是返回一个已过滤的网址,该网址在' /'之后删除了任何内容。

Integer

输出结果现在是

[{url: bing.com},
 {url: bing.com/search?q=test},
 {url: rt.com/test}]

我想要做的是立即删除重复,这意味着它只会返回SELECT url, CASE WHEN LOCATE('/', url) THEN LEFT(url, LOCATE('/', url) - 1) ELSE url END AS editedUrl FROM testTable; url[0] = bing.com url[1] = bing.com url[2] = rt.com ,我尝试这样做

url[0]

但是,它会根据实际值而非过滤后的值来比较网址。

请协助, 感谢。

3 个答案:

答案 0 :(得分:1)

您必须按编辑的网址进行分组:

SELECT MIN(url), 
   CASE
      WHEN LOCATE('/', url) THEN LEFT(url, LOCATE('/', url) - 1)
      ELSE url
   END AS editedUrl
FROM testTable
GROUP BY editedUrl

如果你只想要一个独特的editUrl:

SELECT DISTINCT 
   CASE
      WHEN LOCATE('/', url) THEN LEFT(url, LOCATE('/', url) - 1)
      ELSE url
   END AS editedUrl
FROM testTable

答案 1 :(得分:0)

尝试使用group by:

SELECT url,
CASE WHEN LOCATE('/', url) THEN LEFT(url, LOCATE('/', url) - 1)
ELSE url END AS editedUrl
FROM testTable group by url;

答案 2 :(得分:0)

如果您使用COLUMN上的选项IGNORE设置唯一键,您可以自动删除一个或多个COLUMNS中的重复项,其中必须是唯一的,如下所示:

一个栏目

ALTER IGNORE TABLE yourTable
ADD UNIQUE KEY idx_name (yourField);

两个COLUMN

ALTER IGNORE TABLE yourTable
ADD UNIQUE KEY idx_name (yourField,nextField);

因此您可以生成一个新的COLUM来存储短URL,之后您可以设置删除重复的键