php - SQL:不明确的列解析,无需更改 where 子句

标签 php mysql sql database

我有以下 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/

相关文章:

mysql - 需要替换MySQL中的HTML单引号实体

mysql - Centos5 yum安装mysql-devel.x86_64错误

mysql - 从连接表中获取最高列值

python - SQLite 查询限制

php - 删除没有子 DOM PHP 的元素

PHP 记录完整请求

php - MySQL查询错误(使用php)

mysql - 如果为空或计算值,则将设置 col 更新为 0.00

.net - 如何在不等待存储过程完成的情况下调用存储过程?

php - 通过 PHPMailer 发送带附件的电子邮件