sql >> データベース >  >> RDS >> Mysql

別の値の結果であるテーブルの内容の選択

    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;
    

    より良い解決策は、これらの異なるテーブルのデータを1つのテーブルに入れ、typeidを使用してそれらを分離することです




    1. 暗黙の内部結合-それらは等しいですか?

    2. タイムスタンプフィールドと日付フィールドを含むJPA選択クエリが結果の取得に失敗する

    3. 通知のために毎秒テーブルを照会します。それは良い習慣ですか?

    4. SQLServerのあるデータベースから別のデータベースにテーブルをコピーする