Ich lief ein Problem beim Versuch, eine Aktion pro Benutzer mit der geringsten Priorität zu ziehen, die Priorität basiert auf anderen Spalten Inhalt und ist eine ganze Zahl,Holen Sie sich die ID der Zeile mit dem kleinsten Wert, Gruppe von einer anderen Spalte
Dies ist die erste Abfrage:
SELECT
CASE
...
END AS dummy_priority,
id,
user_id
FROM
actions
Ergebnis:
id user_id priority
1 2345 1
2 2345 3
3 2999 5
4 2999 2
5 3000 10
Gewünschtes Ergebnis:
id user_id priority
1 2345 1
4 2999 2
5 3000 10
Nach was ich versuchte ich will
SELECT x.id, x.user_id, MIN(x.priority)
FROM (
SELECT
CASE
...
END AS priority,
id,
user_id
FROM
actions
) x
GROUP BY x.user_id
Was nicht
Fehlercode nicht funktioniert: 1055. Expression # 1 von SELECT-Liste ist nicht in GROUP BY-Klausel und enthält nichtaggregierte Spalte 'x.id', die nicht ist, funktional abhängig von Spalten in GROUP BY-Klausel;
Die meisten Beispiele dafür ich nur die user_id und Priorität Extrahieren gefunden wurden und dann mit ihnen beiden eine innere Verknüpfung macht die Reihe zu bekommen, aber ich kann da nicht tun (Priorität, user_id) nicht einzigartige
ein einfacher wäre nachprüfbare Beispiel
seinCREATE TABLE `actions` (
`id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`priority` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `actions` (`id`, `user_id`, `priority`) VALUES
(1, 2345, 1),
(2, 2345, 3),
(3, 2999, 5),
(4, 2999, 2),
(5, 3000, 10);
wie das gewünschte Ergebnis zu extrahieren (im Auge halten Sie bitte, dass diese Tabelle eine Unterabfrage ist)?
Wie versucht, einen Stock ohne einen Lutscher zu verkaufen – Strawberry
was meinst du? Ist es der Mangel an Informationen? – Tarik
Ja. Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql-query – Strawberry