我有以下 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。有什么提示我如何才能实现这一目标吗?
最佳答案
您可以使用子查询:
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','-');
查看here .
关于php - SQL:不明确的列解析,无需更改 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13837556/