gpt4 book ai didi

php - mysql中用于不同查询的多个表

转载 作者:行者123 更新时间:2023-11-29 08:33:50 25 4
gpt4 key购买 nike

最初,我的 SQL 查询用于检查是否有待处理的时间表/加类准备好供经理审查...现在我添加到位于不同表上的待命时间表中...

我之前的 sql 查询有效,但没有 $ONCALL_TABLE...

list($qh, $num) = dbQuery("SELECT manager FROM $USER_TABLE WHERE username IN (SELECT DISTINCT uid FROM $TIMES_TABLE WHERE submitstatus=1 OR ot_status=1)");
<小时/>

现在我尝试将挂起的待命时间表添加到同一个 SQL 查询中,但我不断收到错误......也许有人可以帮助我修复我的语法?:

list($qh, $num) = dbQuery("SELECT manager FROM $USER_TABLE WHERE username IN (SELECT DISTINCT $TIMES_TABLE.uid, $ONCALL_TABLE.uid FROM $TIMES_TABLE, $ONCALL_TABLE WHERE $TIMES_TABLE.submitstatus=1 OR $TIMES_TABLE.ot_status=1 OR $ONCALL_TABLE.submitstatus=1)");

我得到的错误:无法执行查询:操作数应包含 1 列

最佳答案

问题出在子查询中,但我会使用union all来处理它:

SELECT manager
FROM $USER_TABLE
WHERE username IN (SELECT uid
from (select $TIMES_TABLE.uid
from $TIMES_TABLE
where $TIMES_TABLE.submitstatus=1 OR $TIMES_TABLE.ot_status=1
union all
select $ONCALL_TABLE.uid
from $ONCALL_TABLE
where $ONCALL_TABLE.submitstatus=1
) t
)

但说实话,union all 可能会干扰索引的使用。这可能会表现更好:

SELECT manager
FROM $USER_TABLE
WHERE username IN (select $TIMES_TABLE.uid
from $TIMES_TABLE
where $TIMES_TABLE.submitstatus=1 OR $TIMES_TABLE.ot_status=1
) or
username in (select $ONCALL_TABLE.uid
from $ONCALL_TABLE
where $ONCALL_TABLE.submitstatus=1
)

关于php - mysql中用于不同查询的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com