为左连接mysql 5.7选择distinct与常量值

时间:2017-01-04 10:50:42

标签: mysql

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

请帮我解决这个问题。

0 个答案:

没有答案