mysql - mysql中按子查询分组的一行以上

标签 mysql sql subquery

我想将 2 个选择合并为一个。

第一个选择(我想像子查询一样)是


    select ait.ai_type_id, count(ai.envelope_id) 
    from oas_add_info_type ait 
    left join oas_case_additional_info ai 
        ON ai.type = ait.ai_type_id 
       AND ai.envelope_id = 4465 
    group by ait.ai_type_id 
    order by ait.ai_type_id

返回


    +------------+-----------------------+
    | ai_type_id | count(ai.envelope_id) |
    +------------+-----------------------+
    |          0 |                    17 |
    |          1 |                     0 |
    |          2 |                     0 |
    |          3 |                     0 |
    |          4 |                     0 |
    +------------+-----------------------+

主要选择看起来像:


    SELECT e.envelope_id, e.transmit_date, e.mcf, e.vehicle_action, e.manually_added 
    FROM oas_case_envelope e, oas_case_vehicle v, oas_users u, oas_companies c    WHERE e.envelope_id = v.envelope_id
      AND u.user_id = 1
      AND c.company_id = u.company_id
      AND ((e.envelope_name = '' AND Length(e.envelope_name) > 0) OR (v.vehicle_vin = '19XFB2F53CE105646' AND Length(v.vehicle_vin) > 0))    
    ORDER BY e.envelope_id DESC

返回


    +-------------+---------------------+-----+----------------+----------------+
    | envelope_id | transmit_date       | mcf | vehicle_action | manually_added |
    +-------------+---------------------+-----+----------------+----------------+
    |        4465 | 2017-04-03 21:29:20 |   0 |              0 |              1 |
    |        4418 | 2017-01-14 11:37:46 |   0 |              0 |              0 |
    |        4384 | 2016-11-30 20:29:24 |   0 |              0 |              0 |
    |        4365 | 2016-10-31 21:59:37 |   0 |              0 |              0 |
    +-------------+---------------------+-----+----------------+----------------+

我需要把这两个放在一起

我最好的尝试是


    SELECT e.envelope_id, e.transmit_date, e.mcf, e.vehicle_action, e.manually_added, A.*
    FROM oas_case_envelope e
    JOIN oas_case_vehicle v ON e.envelope_id = v.envelope_id
    JOIN oas_users u ON u.user_id = 1
    JOIN  oas_companies c ON c.company_id = u.company_id
    INNER JOIN (SELECT * FROM
           (select ait.ai_type_id, count(ai.type) 
            from oas_add_info_type ait 
            left join oas_case_additional_info ai ON ai.type = ait.ai_type_id AND ai.envelope_id = a.envelope_id 
            group by ait.ai_type_id 
            order by ait.ai_type_id)) as A ON a.envelope_id = e.envelope_id
    WHERE ((e.envelope_name = '' AND Length(e.envelope_name) > 0) OR (v.vehicle_vin = '19XFB2F53CE105646' AND Length(v.vehicle_vin) > 0))

我收到

ERROR 1248 (42000): Every derived table must have its own alias

我会很感激任何想法。 提前致谢

最佳答案

简单的....改变这一行

     order by ait.ai_type_id)) as A ON a.envelope_id = e.envelope_id

        order by ait.ai_type_id) as B) as A ON a.envelope_id = e.envelope_id

那里有一个额外的派生表。

关于mysql - mysql中按子查询分组的一行以上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43564435/

相关文章:

sql - 同一表中的嵌套 SELECT 和 CASE 语句

MySQL建表

sql - 如何列出最近 10 天的记录?

sql - 带有大小写和子查询的 PostgreSQL UPDATE 以从正上方的行中获取值

php - 在 1 个查询中更新给定条件的两列

SQL 按 NULL/NOT NULL 分组

sql - 识别单行子查询错误

mysql - SQL 连接日期范围

mysql - 使用 Mysql 选择语句

mysql - 无法在 cygwin 上安装 mysql,找不到 curses/termcap 库