0

2 つの select ステートメントで結合を実行しようとしていました。

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 ワークベンチはそれを実行しません。私は何を間違っていますか?(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 に答える