0

我正要对两个选择语句执行连接。

select x.A from (select blah - Q1 )x join (select blah - Q2 ) y on x.A = y.A

我有一个代替 Q2 的查询:

select c.cust_id, c.card_id, c.name, s.name, sum(b.amt) - sum(p.amt) as DUE_AMT, DATEDIFF( now(), min(b.due_date)) AS DELAY
from cust c
inner join bill b on b.cust_id = c.cust_id 
left join payment p on p.bill_id = b.bill_id
inner join street s on s.street_id = c.street_id
where c.co_id=1
group by c.cust_id

上面的语句运行正常并返回一个结果集。

但是当我尝试将上述查询包含在 select * from (Q2) x 中时,mysql 工作台没有执行它。我究竟做错了什么?因为 select * from (Q1) x 也就是说,如果我输入其他查询,它会完美运行。

select * from (
select c.cust_id, c.card_id, c.name, s.name, sum(b.amt) - sum(p.amt) as DUE_AMT, DATEDIFF( now(), min(b.due_date)) AS DELAY
from cust c
inner join bill b on b.cust_id = c.cust_id 
left join payment p on p.bill_id = b.bill_id
inner join street s on s.street_id = c.street_id
where c.co_id=1
group by c.cust_id
) x
4

1 回答 1

0

自己想通了这个问题。我自己回答这个问题,这样开发人员就不会不必要地浪费时间。

它是 mysql 工作台http://bugs.mysql.com/bug.php?id=67766中的一个错误,它阻止向用户显示正确的错误。

因此,作为记录,问题出在我的查询c.name, s.name中,select 语句中有这个,它在结果集中产生相同列名下的数据。对于正常的查询运行,可以有重复的列名。但是,对于查询结果集,不允许出现重复的列名,这实际上很有意义。

于 2013-08-18T09:04:39.053 回答