2017-05-15 8 views
0

Ich möchte die Abfrage dynamisch auswählen, welche Tabelle es auf der Grundlage eines Werts in einer bestimmten Zeile in einer anderen Tabelle sucht.Dynamisch wählen, welche Tabelle

Ich habe diese Anfrage:

SELECT d.name 

FROM `database1`.domains AS d 
WHERE (SELECT COUNT(u.id) FROM <<d.db_name>>.users u) > 0 

Ich möchte den Wert von d.db_name als Datenbanknamen verwenden. Beispiel: d.db_name = database2

Ich möchte diese:

SET @table_name = "some_table"; 

SELECT * FROM @table_name; 

Wenn Sie den Variablenwert geändert werden soll abhängig von den Ergebnissen:

SELECT d.name 

FROM `database1`.domains AS d 
WHERE (SELECT COUNT(u.id) FROM `database2`.users u) > 0 
+0

Das klingt wie eine wirklich schlechte Datenarchitektur. –

+0

Diese Abfrage wird nur von mir für eine Statistik verwendet. –

+0

Werfen Sie einen Blick [hier] (http://stackoverflow.com/questions/4165020/what-is-dynamic-sql) – JohnHC

Antwort

0

Sie Variablen für diese verwenden könnte Sie wählen, dass Sie verwenden können IF wie folgt:

IF(some_column>50, @table_name := "value for true", @table_name := "value for false");