[英]MySQL - Select value only once based on another field
我的數據庫架構如下所示:
CREATE TABLE test (
id INT(11) UNSIGNED PRIMARY KEY,
title VARCHAR(255) NOT NULL,
priority ENUM('low', 'medium', 'high') NOT NULL
);
INSERT INTO test (id, title, priority) VALUES (1, 'test', 'medium');
INSERT INTO test (id, title, priority) VALUES (2, 'test', 'high');
INSERT INTO test (id, title, priority) VALUES (3, 'test2', 'low');
我的查詢如下所示:
SELECT * FROM test
ORDER BY FIELD(priority, 'high', 'medium', 'low');
我想根據priority
字段對字段title
進行DISTINCT
。 例如,如果有兩個或兩個以上具有相同title
數據,我只想選擇一個優先級最高的數據,那么在我的情況下,預期結果將是ID為2和3的數據。該怎么做?
一種方法是:
SELECT t.*
FROM test t
WHERE FIELD(priority, 'high', 'medium', 'low') =
(SELECT MIN(FIELD(priority, 'high', 'medium', 'low'))
FROM test t2
WHERE t2.title = t.title
);
編輯:
我不認為可以重復優先次序。 上面可以修改為使用id
:
SELECT t.*
FROM test t
WHERE id = (SELECT id
FROM test t2
WHERE t2.title = t.title
ORDER BY FIELD(priority, 'high', 'medium', 'low')
LIMIT 1
);
嘗試這個...
表和樣本數據
CREATE TABLE test (
id INT(11) UNSIGNED PRIMARY KEY,
title VARCHAR(255) NOT NULL,
priority ENUM('low', 'medium', 'high') NOT NULL
);
INSERT INTO test (id, title, priority) VALUES (1, 'test', 'medium');
INSERT INTO test (id, title, priority) VALUES (2, 'test', 'high');
INSERT INTO test (id, title, priority) VALUES (3, 'test2', 'low');
INSERT INTO test (id, title, priority) VALUES (4, 'test2', 'low');
INSERT INTO test (id, title, priority) VALUES (5, 'test2', 'low');
INSERT INTO test (id, title, priority) VALUES (6, 'test', 'low');
INSERT INTO test (id, title, priority) VALUES (7, 'test3', 'low');
INSERT INTO test (id, title, priority) VALUES (8, 'test3', 'high');
INSERT INTO test (id, title, priority) VALUES (9, 'test3', 'medium');
詢問
SELECT Max(t2.id) AS ID,
t1.title AS Title,
t1.priority AS Priority
FROM (SELECT title,
Min(priority) AS priority
FROM test
GROUP BY title
ORDER BY Field(priority, 'high', 'medium', 'low')) t1
INNER JOIN test t2 using (title, priority)
GROUP BY t1.title,
t1.priority;
產量
+-----+--------+----------+
| ID | Title | Priority |
+-----+--------+----------+
| 2 | test | high |
| 5 | test2 | low |
| 8 | test3 | high |
+-----+--------+----------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.