0

我有以下 SQL 查询:

SELECT call_type FROM INCOMING_CALLS, LIVE_CALLS 

WHERE LIVE_CALLS.status='INCALL' and INCOMING_CALLS.callerid = LIVE_CALLS.callerid

AND pbl_id in ('111','190','121','111','-','111','121','303','6730','-');

LIVE_CALLS 和 INCOMING_CALLS 这两个表都有 pbl_id 列。这显然会导致以下错误:

ERROR 1052 (23000): Column 'pbl_id' in where clause is ambiguous

我知道通过更改来解决这个问题非常简单

pbl_id in (

INCOMING_CALLS.pbl_id in (

INCOMING_CALLS.pbl_id in (

但我不能这样做,因为下面的部分是动态构建的,我无法控制它。

AND pbl_id in ('111','190','121','111','-','111','121','303','6730','-');

我需要匹配两个表的 pbl_id。任何提示我该如何实现?

4

2 回答 2

1

您可以使用子查询:

select call_type
from INCOMING_CALLS ic
inner join (select distinct callerid from LIVE_CALLS
            where LIVE_CALLS.status='INCALL') lc
    on ic.callerid = lc.callerid
where 1 = 1
AND pbl_id in ('111','190','121','111','-','111','121','303','6730','-');

在这里看到它。

于 2012-12-12T10:25:39.650 回答
0

如果添加语句:

INCOMING_CALLS.pbl_id = LIVE_CALLS.pbl_id

然后将两者之一与 in 语句进行比较

AND INCOMING_CALLS.pbl_id in ('111','190','121','111','-','111','121','303','6730','-');

再想一想,你为什么不直接加入表格呢?

SELECT call_type FROM INCOMING_CALLS
LEFT JOIN LIVE_CALLS ON LIVE_CALLS.pbl_id = INCOMING_CALLS.pbl_id
WHERE LIVE_CALLS.status='INCALL' and INCOMING_CALLS.callerid = LIVE_CALLS.callerid
AND pbl_id in ('111','190','121','111','-','111','121','303','6730','-');
于 2012-12-12T10:23:16.783 回答