sql >> Databáze >  >> RDS >> Mysql

VÝBĚR obsahu tabulky, který je výsledkem jiné hodnoty

pomocí 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;

Lepším řešením je umístit data z těchto různých tabulek do jedné tabulky a použít typid k jejich oddělení




  1. Propojte Node.js s Oracle na platformě Windows

  2. Jak používat RETURNING s ON CONFLICT v PostgreSQL?

  3. Jak se vyhnout vícenásobnému vložení v PostgreSQL

  4. Co dělá COMMIT?