mysql fake auswählen
Mein Zweck ist: um mehrere Zeilen aus einer Liste, die,wie (1,2,3,4,5),('a','b','c','alles') und so weiter.
mysql> select id from accounts where id in (1,2,3,4,5,6);
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 5 |
| 6 |
+----+
5 rows in set (0.00 sec)
Den obigen sql ist sicherlich ok,aber meine Frage ist:gibt es einen Weg, um das gleiche Ergebnis ohne
Angabe einer Tabelle?Da meine Aufgabe hier ist nur zu propagieren Zeilen von einem id_set
anderes Beispiel:
mysql> select now() as column1;
+---------------------+
| column1 |
+---------------------+
| 2009-06-01 20:59:33 |
+---------------------+
1 row in set (0.00 sec)
mysql>
Diesem Beispiel propagiert eine einzelne Zeile Ergebnis ohne Angabe einer Tabelle,
aber wie zu propagieren mehrere Zeilen aus einer Zeichenkette wie (1,2,3,4,5,6)?
InformationsquelleAutor der Frage omg | 2009-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas wie dies funktionieren sollte:
InformationsquelleAutor der Antwort Frank V
MySQL hat eine dummy-Tabelle DUAL. aber mit DUAL-ändert sich nichts (es ist nur für die Bequemlichkeit), und sicherlich nicht dieser Abfrage arbeiten.
Ich bin sicher, es gibt eine bessere Weise, das zu erreichen, was Sie zu tun versuchen. Wir könnten in der Lage sein zu helfen, wenn Sie erklären Ihr problem.
InformationsquelleAutor der Antwort Can Berk Güder
Dieser beantwortet Ihre Frage nicht genau, aber ich glaube, das wird fix your eigentlichen problem..
SET @counter = 0;
SELECT (@counter := @counter + 1 counter) ... der rest der Abfrage
InformationsquelleAutor der Antwort Evert
Einer Technik, die ich gefunden habe, von unschätzbarem Wert ist eine "Integer-Tabelle"mit der Sie leicht alle Arten von nette Dinge, wie diese hier (xaprb geschrieben hat, mehrere blog-Beiträge auf dieser Technik und der eng Verwandte "mutex-Tabelle").
InformationsquelleAutor der Antwort Alex Martelli
Einfache und altmodische Art und Weise ist, eine Tabelle zu verwenden, die hält aufeinanderfolgende Werte.
Einmal installiert, können Sie Abfragen schreiben, wie unten gezeigt.
bekommen jede zweite Zeile:
bekommen Zeilen aus 1101, 1111:
So, wenn Sie in der Notwendigkeit von mehr reicht, dann erhöhen Sie einfach die Größe der aufeinander folgenden Werte in der Tabelle range10.
Die Abfrage ist einfach, die Kosten sind gering, keine gespeicherte Prozedur oder Funktion benötigt.
Hinweis:
Können Sie erstellen Sie eine Tabelle mit aufeinander folgenden char-Werte zu. Aber die Variation der Inhalte würde nicht so einfach sein.
InformationsquelleAutor der Antwort Tom Schaefer