1 回答
TA贡献1848条经验 获得超6个赞
您可以使用 [substring_Index][1] 达到此目的,但您最终必须更改 CHAR 的数据类型或位点
实际上不需要该函数使代码更具可读性
架构(MySQL v5.7)
CREATE TABLE Inputs (
`query` VARCHAR(1),
`domain` VARCHAR(16),
`url` VARCHAR(16),
`score` INTEGER
);
INSERT INTO Inputs
(`query`, `domain`, `url`, `score`)
VALUES
('a', 'www.google.com', 'www.google.com/a', '3'),
('a', 'www.google.com', 'www.google.com/b', '1'),
('a', 'www.facebook.com', 'www.google.com/c', '2');
CREATE FUNCTION geturl (_url CHAR(255))
RETURNS CHAR(255) DETERMINISTIC
RETURN SUBSTRING_INDEX(_url, "/", 1);
查询#1
select `query`, `domain`, `url` , `score`
from Inputs t
order by
(select max(score) from Inputs t1 where geturl(t1.url) = geturl(t.url)) desc,
score desc;
| query | domain | url | score |
| ----- | ---------------- | ---------------- | ----- |
| a | www.google.com | www.google.com/a | 3 |
| a | www.facebook.com | www.google.com/c | 2 |
| a | www.google.com | www.google.com/b | 1 |
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报