mysql - 当列存在时查询不同的表

标签 mysql sql

数据库:MySql 5.5.3

我在表topic中有一个type列,如果type是“E”,这意味着“Event”中存在一个条目' 表,它应该查询“TOPIC_HAS_EVENT”表以从 EVENT 表中获取更多列。同样,如果类型为“P”,这意味着“轮询表”中存在一个条目,它应该查询“TOPIC_HAS_POLL”表以从 POLL 表中获取几列。如果类型为空,那么它应该像往常一样查询以从注释表中获取所有行及其注释。

最终结果应包含所有类型(“E”、“P”、NULL)的所有主题行及其来自其他表的特定列。如果这可以轻松完成,那么我需要添加更多列,如下所述

更复杂

如果 type='E' 有一些行,它应该从 EVENT_HAS_USER 表中获取更多行,例如用户信息。

关系

Each Topic has Many Comments
Each Topic has One Event
Each Topic has One Poll

EVENT ManyTOMany User

到目前为止已创建查询。我仍然需要添加“类型”列。请帮助我。

SELECT DISTINCT
        T.TOPIC_GUID, COUNT(*) TOTAL_COMMENTS
    FROM
        CIRCLE C, CIRCLE_HAS_USER CHU, CIRCLE_HAS_TOPIC CHT, TOPIC T
    LEFT JOIN TOPIC_COMMENT TC ON T.TOPIC_GUID = TC.TOPIC_GUID
    WHERE
        CHT.CIRCLE_GUID = C.CIRCLE_GUID
            AND T.TOPIC_GUID < 400000 -- ?
            AND CHT.TOPIC_GUID = T.TOPIC_GUID
            AND CHU.CIRCLE_GUID = C.CIRCLE_GUID
            AND CHU.USER_GUID = 1
            AND CHU.STATUS = 'A'
    GROUP BY T.TOPIC_GUID
    ORDER BY T.LAST_UPDATED_TIMESTAMP DESC
    LIMIT 10 

最佳答案

试试这个:

select (case when type = 'type1' then (select field from table1) else (select field from table2) end) as a from table;

关于mysql - 当列存在时查询不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12665869/

相关文章:

sql - Oracle SQL CASE WHEN ORA-00932 : inconsistent datatypes: expected CHAR got NUMBER 00932. 00000 - "inconsistent datatypes: expected %s got %s"

php - 将其他字段插入 WordPress 主题中的现有注册表单

sql - 如何 : Import PSQL dump file ? pgAdmin 控制台或 PSQL 控制台

php - Cakephp国际化

PHP - 文件编辑表单显示空白

sql - 在 SQL 查询中插入日志语句

sql - 在包含万亿字节数据的 postgres 关系表上运行 select 命令

java - 接收java.sql.SQLException : Invalid column index error while invoking database function

MySQL,优化查询10秒执行

mysql - 如何在 mysql 查询中使用 `fmt`