Pourquoi les deux requêtes ci-dessous renvoient le doublon member_id et pas le troisième?Pourquoi mon mysql DISTINCT ne fonctionne pas?
J'ai besoin de la deuxième requête pour travailler avec distinct. Chaque fois que je lance un GROUP BY, cette requête est incroyablement lente et le résultat ne retourne pas la même valeur que la valeur distincte (la valeur est erronée).
SELECT member_id, id
FROM (SELECT * FROM table1 ORDER BY created_at desc) as u
LIMIT 5
+-----------+--------+
| member_id | id |
+-----------+--------+
| 11333 | 313095 |
| 141831 | 313094 |
| 141831 | 313093 |
| 12013 | 313092 |
| 60821 | 313091 |
+-----------+--------+
SELECT distinct member_id, id
FROM (SELECT * FROM table1 ORDER BY created_at desc) as u
LIMIT 5
+-----------+--------+
| member_id | id |
+-----------+--------+
| 11333 | 313095 |
| 141831 | 313094 |
| 141831 | 313093 |
| 12013 | 313092 |
| 60821 | 313091 |
+-----------+--------+
SELECT distinct member_id
FROM (SELECT * FROM table1 ORDER BY created_at desc) as u
LIMIT 5
+-----------+
| member_id |
+-----------+
| 11333 |
| 141831 |
| 12013 |
| 60821 |
| 64980 |
+-----------+
mon échantillon de table
CREATE TABLE `table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL,
`s_type_id` int(11) NOT NULL,
`created_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `s_FI_1` (`member_id`),
KEY `s_FI_2` (`s_type_id`)
) ENGINE=InnoDB AUTO_INCREMENT=313096 DEFAULT CHARSET=utf8;
Pourquoi n'utilisez-vous pas une syntaxe similaire? SELECT distinct member_id FROM table1 ORDER BY created_at desc LIMIT 5 – Eineki
la parenthèse donne la priorité à la commande, et j'ai besoin de récupérer aussi la colonne id. – belaz
pour être clair, j'ai besoin de récupérer {member_id, id} qui est la dernière entrée 5 et chaque ligne doit avoir le {member_id} unique. – belaz