gpt4 book ai didi

ms-access - 我可以在 iif 函数中执行查询吗

转载 作者:行者123 更新时间:2023-12-04 06:32:44 25 4
gpt4 key购买 nike

我想知道我可以在 ms access 数据库中使用的 iif 函数中运行查询。我的情况

Select field1,(iif(3<4,'Select * from tbl1','select * from tbl2')) from tblmain

当我尝试执行这样的查询时遇到语法错误是什么问题

最佳答案

您的示例查询并不清楚您要实现的目标。

您可以在 Access 查询中使用 IIF 函数,例如:

SELECT IIF([SomeField]<15, "Smaller than 15", "Greater than!") As Whatever 
FROM myTable

例如,您也可以在 Access 中使用子选择(例如从 http://allenbrowne.com/subquery-01.html 无耻地窃取的示例):
SELECT MeterReading.ID, MeterReading.ReadDate, MeterReading.MeterValue, 
(SELECT TOP 1 Dupe.MeterValue
FROM MeterReading AS Dupe
WHERE Dupe.AddressID = MeterReading.AddressID
AND Dupe.ReadDate < MeterReading.ReadDate
ORDER BY Dupe.ReadDate DESC, Dupe.ID) AS PriorValue
FROM MeterReading;

请注意,指定的 subselect 查询必须保证返回单个记录 - 通过指定 TOP 1 或使用聚合函数 - 并且必须链接回 WHERE 子句中的父查询。

但是,即使您的子选择有效,也不能以您在问题中尝试的方式使用 IIF 语句,但事实并非如此。

建议两个选项,尽管我不太清楚您要在这里实现什么。首先,您可能需要考虑在 VBA 中执行此操作。就像是:
const query1 As String = "Select * from tbl1"
const query2 As String = "select * from tbl2"

Dim recset as DAO.Recordset
set recset = CurrentDB.OpenRecordset(iif(3<4, query1, query2))

或者,如果 tbl1 和 tbl2 具有相同的字段,您可以执行以下操作:
SELECT * FROM tbl1 WHERE 3<4
UNION ALL
SELECT * FROM tbl2 WHERE NOT (3<4)

如果您将 3<4 替换为您正在检查的任何实际条件,您只会从一个或另一个或查询中获取记录,而不会同时获取两者。但是,我怀疑如果您需要这样做,您的数据库可能存在设计问题 - 我可以想到许多需要这样做的有问题的场景,但很少有有效的场景,尽管我确定它们存在。

关于ms-access - 我可以在 iif 函数中执行查询吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5206265/

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