0

在 MS Access 中,我需要使用此查询从不同表中选择包含许多数据的单行:

select top 1 a.colname,b.colname,c.colname 
from tba a, tbb b, tbc c 
where a.colname = 'efg' or
      b.colname ='efg' or
      c.colname ='efg' 

当'efg'与 3 个表中的至少 1 个匹配时,我将完美地获取数据,但如果它与其中任何一个都不匹配,我将使用等待光标冻结 MS Access。我猜它出于某种原因正在循环。我只能在 Windows 的任务管理器中使用END TASK来停止它。

我的查询如何,任何专家都可以解释或建议不同的技术来避免这种情况吗?

谢谢你。

4

1 回答 1

0

如果 3 个表中的每个字段都是相同的字段,那么您可以使用联合然后选择返回的第一条记录。

select top 1 d.*
FROM (      SELECT a.colname  as colName
            FROM tba a
            WHERE a.colname = 'efg'
        UNION ALL
            SELECT b.colnamee as colName      
            FROM tbb b 
            WHERE B.colName='efg' 
        UNION ALL
            SELECT c.colname as colName      
            FROM tbc c
            WHERE c.colName='efg'
     ) as d

或者,如果它们是 3 个不同的字段,那么就像其他人建议的那样,您可以加入这三个表以减少服务器负载。

于 2016-11-15T07:18:27.837 回答