我有一个表 t_tender_cpv_details
,其中有一个字段 tender_id
. 有3行,值为2 .
我需要自己加入 table . 它也有一些常数值 . 右侧没有返回任何值 . 以下是查询的简化版本:
SELECT a.tender_id,b.const_field FROM (SELECT tender_id FROM t_tender_cpv_details WHERE tender_id=2 ) a
LEFT JOIN (SELECT 'A' AS const_field, tender_id FROM t_tender_cpv_details WHERE 1=2 ) b ON (a.tender_id=b.tender_id)
结果:
tender_id const_field
2,(NULL)
2,(NULL)
2,(NULL)
现在,对于MySQL 5.7,当我们向子句添加 distinct
时, const_field
字段会自动添加常量值 . 查询:
SELECT DISTINCT a.tender_id,b.const_field FROM (SELECT tender_id FROM t_tender_cpv_details WHERE tender_id=2 ) a
LEFT JOIN (SELECT 'A' AS const_field, tender_id FROM t_tender_cpv_details WHERE 1=2 ) b ON
(a.tender_id=b.tender_id)
结果:
tender_id const_field
2,A
在MySQL 5.5中,我们得到了正确的结果,即2,(NULL) . 将MySQL版本升级到5.7会引发此错误 .
请帮我解决这个问题 .