嵌套 SQL 查询无法引用两个不同的数据库
Nested SQL query not working referring two different databases
查询:
SELECT xid
FROM db2.pat_info
WHERE xid IN (SELECT DISTINCT xid
FROM db1.audit
WHERE FUNCTION IN ('ABC','PQR')
AND xid NOT LIKE 'test%'
AND status = 1
AND ques_responded = 9)
AND fname IS NOT NULL
AND t_id IN (11,12)
我是 SQL 的初学者,在执行上述查询时遇到问题。内部查询按预期执行,但是当与外部查询集成时,我没有得到任何查询结果。
如果两个查询都是单独执行的,那么会得到预期的结果。
内部查询中提到的'FUNCTION'列是table中的'function'。它无法更改,因为它是旧实现。
任何线索都会有所帮助。
IN
可能效率很低。切换到 EXISTS
或移动到 FROM
子句:
SELECT pi.xid
FROM db2.pat_info pi JOIN
(SELECT DISTINCT xid
FROM db1.audit
WHERE FUNCTION IN ('ABC', 'PQR') AND
xid NOT LIKE 'test%' AND
status = 1 AND
ques_responded = 9
) a
ON pi.xid = a.xid
WHERE pi.fname IS NOT NULL AND pi.t_id IN (11, 12);
在 MySQL 的某些版本中,子查询对外部 table.
中的每一行重新 运行
我不知道您在合并查询时发生了什么,但是如果您担心性能问题,那么我建议使用 exists
而不是 in
子句
SELECT xid
FROM db2.pat_info p
WHERE EXISTS (SELECT 1
FROM db1.audit
WHERE xid = P.xid AND FUNCTION IN ('ABC','PQR') AND
xid NOT LIKE 'test%' AND
status = 1 AND ques_responded = 9) AND
fname IS NOT NULL AND t_id IN (11,12);
查询:
SELECT xid
FROM db2.pat_info
WHERE xid IN (SELECT DISTINCT xid
FROM db1.audit
WHERE FUNCTION IN ('ABC','PQR')
AND xid NOT LIKE 'test%'
AND status = 1
AND ques_responded = 9)
AND fname IS NOT NULL
AND t_id IN (11,12)
我是 SQL 的初学者,在执行上述查询时遇到问题。内部查询按预期执行,但是当与外部查询集成时,我没有得到任何查询结果。
如果两个查询都是单独执行的,那么会得到预期的结果。
内部查询中提到的'FUNCTION'列是table中的'function'。它无法更改,因为它是旧实现。
任何线索都会有所帮助。
IN
可能效率很低。切换到 EXISTS
或移动到 FROM
子句:
SELECT pi.xid
FROM db2.pat_info pi JOIN
(SELECT DISTINCT xid
FROM db1.audit
WHERE FUNCTION IN ('ABC', 'PQR') AND
xid NOT LIKE 'test%' AND
status = 1 AND
ques_responded = 9
) a
ON pi.xid = a.xid
WHERE pi.fname IS NOT NULL AND pi.t_id IN (11, 12);
在 MySQL 的某些版本中,子查询对外部 table.
中的每一行重新 运行我不知道您在合并查询时发生了什么,但是如果您担心性能问题,那么我建议使用 exists
而不是 in
子句
SELECT xid
FROM db2.pat_info p
WHERE EXISTS (SELECT 1
FROM db1.audit
WHERE xid = P.xid AND FUNCTION IN ('ABC','PQR') AND
xid NOT LIKE 'test%' AND
status = 1 AND ques_responded = 9) AND
fname IS NOT NULL AND t_id IN (11,12);