sql >> Databasteknik >  >> RDS >> Mysql

Att välja innehållet i tabellen, vilket är ett resultat av ett annat värde

använder 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;

Den bättre lösningen är att placera data från de olika tabellerna i en tabell och använda typid för att separera dem




  1. Varför går det så långsamt att ansluta till MySQL-servern?

  2. importfel med python-mysql-connector 1.16, django 1.6 och python 3.2.3

  3. Hur man inaktiverar alla CHECK &främmande nyckelbegränsningar i en databas i SQL Server (T-SQL-exempel)

  4. Få anställda som var aktiva under ett visst datumintervall