我想将 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/