我有一个表 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会引发此错误 .

请帮我解决这个问题 .