1 回答

TA貢獻(xiàn)1848條經(jīng)驗 獲得超6個贊
您可以使用 [substring_Index][1] 達(dá)到此目的,但您最終必須更改 CHAR 的數(shù)據(jù)類型或位點(diǎn)
實際上不需要該函數(shù)使代碼更具可讀性
架構(gòu)(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 關(guān)注
- 111 瀏覽
添加回答
舉報