Wie kann ich eine SQL-Tabelle mit mehreren Bedingungen abfragen und höchstens 1 Element pro Bedingung abrufen?MySql

MySQL DBMS-Forum
Guest
 Wie kann ich eine SQL-Tabelle mit mehreren Bedingungen abfragen und höchstens 1 Element pro Bedingung abrufen?

Post by Guest »

Ich habe eine MySQL-Tabelle mit der folgenden Struktur:

Code: Select all

+------------+--------------+
| Field      | Type         |
+------------+--------------+
| id         | varchar(20)  |
| make       | varchar(255) |
| color      | varchar(20)  |
+------------+--------------+
Angenommen, ich habe die folgenden Eingabedaten:

Code: Select all

+---------+-------------------+
|   ID    | Make    |  Color  |
+---------+---------+---------+
|    0    | Toyota  |   Red   |
+---------+---------+---------+
|    1    | Toyota  |   Red   |
+---------+---------+---------+
|    2    | Toyota  |   Blue  |
+---------+---------+---------+
|    3    | Honda   |   Red   |
+---------+---------+---------+
|    4    | Mazda   |   Blue  |
+---------+---------+---------+
|    5    | Mazda   |   Red   |
+---------+---------+---------+
|    6    | Toyota  |   Red   |
+---------+---------+---------+
|    7    | Honda   |   Blue  |
+---------+---------+---------+
|    8    | Nissan  |   Blue  |
+---------+---------+---------+
|    9    | Nissan  |   Blue  |
+---------+---------+---------+
|    10   | Nissan  |   Red   |
+---------+---------+---------+
|    11   | Nissan  |   Red   |
+---------+---------+---------+
|    12   | Nissan  |   Blue  |
+---------+---------+---------+
|    13   | Nissan  |   Blue  |
+---------+---------+---------+
|    14   | Nissan  |   Blue  |
+---------+---------+---------+
|    15   | Nissan  |   Red   |
+---------+---------+---------+
|    16   | Nissan  |   Blue  |
+---------+---------+---------+
Ich möchte die Ergebnisse abfragen, damit ich eine Permutation von Toyota, Honda oder Mazda und den Farben Blau erhalte< /code> oder Rot, ich möchte jedoch nur ein Limit von 3 zufälligen Einträgen für jede dieser Kombinationen sehen. Als Beispiel könnte ich möglicherweise Folgendes als Ergebnis erhalten:

Code: Select all

+---------+---------+---------+
|   ID    | Make    |  Color  |
+---------+---------+---------+
|    1    | Toyota  |   Red   |
+---------+---------+---------+
|    6    | Toyota  |   Red   |
+---------+---------+---------+
|    2    | Toyota  |   Blue  |
+---------+---------+---------+
|    3    | Honda   |   Red   |
+---------+---------+---------+
|    4    | Mazda   |   Blue  |
+---------+---------+---------+
|    5    | Mazda   |   Red   |
+---------+---------+---------+
|    7    | Honda   |   Blue  |
+---------+---------+---------+
Es gibt 4 Toyotas, die entweder rot oder blau sind, aber die Grenze liegt bei 3. Wir wählen zufällig 3 davon aus, da sie stimmte mit einer der gewünschten Permutationen überein (daher ist auch die Reihenfolge der IDs zufällig).
Wir sehen auch 2 Hondas, da in der Datenbank nur 2 vorhanden sind , und beide erfüllen die Kriterien. Das Gleiche gilt für die Mazdas.
Mir ist die Reihenfolge der Ergebnisse nicht unbedingt wichtig, aber ich möchte die Permutationen zufällig abrufen können, mit einem Limit von Wie viele von jeder Permutation bekomme ich zurück?
Gibt es eine [einfache] Möglichkeit, dies über eine Abfrage zu tun, die im laufenden Betrieb generiert werden kann? Alternativ bin ich offen für die Idee, mehrere Abfragen durchzuführen und sie dann selbst im Code zusammenzufügen, aber soweit ich weiß, sind mehrere Abfragen nicht sehr leistungsfähig? Auch wenn die Leistung definitiv ein Problem darstellt, würde ich mir, wenn möglich, ein Gleichgewicht zwischen der Lesbarkeit des Codes und der Komplexität der Abfrage wünschen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post