Mysql
 sql >> Datenbank >  >> RDS >> Mysql

AUSWAHL des Inhalts der Tabelle, der das Ergebnis eines anderen Werts ist

mit CASE WHEN:

SELECT *, (
    SELECT `TableName` FROM `TableNames` WHERE `TableID`=`IndexType`
) AS `IndexTypeName`, 
CASE 
    WHEN IndexType=1 THEN (SELECT Username FROM Users WHERE IndexRowID=UserID) 
    WHEN IndexType=2 THEN (SELECT MessageContent FROM Messages WHERE IndexRowID=MessageID) 
    WHEN IndexType=3 THEN (SELECT CommentContent FROM Comments WHERE IndexRowID=CommentID) END TableValue
ORDER BY `IndexTime` DESC;

Die bessere Lösung besteht darin, die Daten aus diesen verschiedenen Tabellen in einer Tabelle zusammenzufassen und die Typ-ID zu verwenden, um sie zu trennen