我有一个表t_tender_cpv_details
,其中有一个字段tender_id
。有3行,值为2.
我需要自己加入桌子。它也有一些常数值。右侧没有返回任何值。以下是查询的简化版本:
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会引发此错误。
请帮我解决这个问题。