Ich habe eine MySQL-Tabelle genannt Kampagnen wie folgtMySQL - Innere in gleichen Tisch sitzen mit WHERE-Klausel
ID integer
Name text
isBalanced boolean
redirects tinyint
Ich versuche, eine SELECT-Abfrage zu erreichen, so dass ich alle Zeilen, wo isBalanced
ist false PLUS nur eine DEFINIERTE Anzahl von Zeilen, in denen isBalanced
wahr ist. Nachdem ich dieses Ergebnis erhalten habe, muss ich das einzige mit der niedrigsten Nummer redirects
bekommen.
Ich weiß, dass es Möglichkeiten gibt, es zu tun, aber ich habe eine harte Zeit, um herauszufinden, wie. Dies ist, was ich bis kennengelernt
SELECT campaigns.id, campaigns.name, campaigns.isBalanced, campaigns.redirects
FROM campaigns AS c
INNER JOIN campaigns_2 AS c2
WHERE c.isBalanced = 0
aber ich nicht in der Lage bin nur einige von ihnen von der c2-Set auszuwählen, und dann neu zu gruppieren alle Filter die einzelnen mit geringsten Anzahl von redirects
zu bekommen.
Jede Hilfe würde sehr geschätzt werden.
zeigen einige Beispieldaten und das erwartete Ergebnis.Es ist nicht klar, was Sie brauchen. –
Was ist Ihre "definierte" Anzahl von Zeilen? Sind diese IDs in einer Tabelle? Einige Kriterien? Denken Sie auch nicht an "Ich möchte diese Zeilen, dann möchte ich diese von denen bekommen". SQL ist set-based und Sie müssen sich selbst beibringen, in diesen Begriffen zu denken und nicht in sequenziellen Verarbeitungsbegriffen. –
@TomH ja und nein, SQL ist auch irgendwie sequentiell. Z.B. Wenn Sie eine Unterabfrage auswählen, können Sie sie als zweistufigen Prozess betrachten. Auch Dinge wie IN oder EXISTS (oder sogar WHERE selbst) können als sequentieller Schritt betrachtet werden. – maraca