sql >> Database teknologi >  >> RDS >> Mysql

Valg af indholdet af tabellen, som er et resultat af en anden værdi

bruger 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 bedre løsning er at lægge dataene fra de forskellige tabeller i én tabel og bruge typeid'et til at adskille dem




  1. Random() i MySql?

  2. Overførsel af værdi fra en rulleliste fra en php til en anden

  3. Tjek e-mail for at være unik php

  4. Formater et tal som en procentdel i Oracle