2013-10-23 23 views
2

我已經繼承了一些ingres數據庫的東西。以前從未使用過ingres。我發現以下查詢來隔離不同的電子郵件地址記錄。查詢不能在Ingres工作

select a.reg_uid as id, a.firstname, a.lastname, a.postzip_code, a.suburb, a.city, a.state, a.email, a.country 
from register a 
inner join 
(
select distinct email, min(reg_uid) as id from register 
    group by email 
) as b 
on a.email = b.email 
and a.id = b.id 

然而,當我插入到這個安格爾,我得到的錯誤

"Table 'select' does not exist or is not owned by you." 

任何想法?

+0

厚福它不是像空格和線返回瘋狂的東西,即不得不在一行上加'join(select ...)爲b'。嘗試使用舊的語法'從註冊a,(選擇...)b其中a.email = b.email和a.id = b.id' – Glenn

+0

你使用什麼版本的Ingres?您是否嘗試過使用終端監視器來測試您的查詢? – Adrian

回答

1

如果您使用安格爾10S(10.1),那麼你可以使用公用表表達式(CTE的)如下:

with b(email,id) as 
(
select distinct email, min(reg_uid) as id from register 
    group by email 
) 
select a.reg_uid as id, a.firstname, a.lastname, a.postzip_code, a.suburb, a.city, a.state, a.email, a.country 
from register a 
inner join b 
on a.email = b.email 
and a.id = b.id 

對於早期版本中,你既可以創建b向視圖(熱膨脹係數是在實現內聯視圖),或者重新把它寫成

select a.reg_uid as id, a.firstname, a.lastname, a.postzip_code, a.suburb, a.city, a.state, a.email, a.country 
from register a 
where a.id = (
select min(reg_uid) as id from register b 
where b.email=a.email 
) 
0

我成功嘗試對安格爾9你的確切聲明:

create table register (id char(10), reg_uid char(10), firstname char(10), lastname char(10), postzip_code char(10), suburb char(10), city char(10), state char(10), email char(10), country char(10)) 

select a.reg_uid as id, a.firstname, a.lastname, a.postzip_code, a.suburb, a.city, a.state, a.email, a.country 
from register a 
inner join 
(
select distinct email, min(reg_uid) as id 
from register 
    group by email 
) as b 
on a.email = b.email 
and a.id = b.id