在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 来阻止它。
我的查询如何,任何专家都可以解释或提出不同的技巧来避免这种情况吗?
谢谢。
答案 0 :(得分: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个不同的字段,那么像其他人一样建议您可以加入这三个表来减少服务器负载。