如果不匹配,则访问查询默认值
Posted
技术标签:
【中文标题】如果不匹配,则访问查询默认值【英文标题】:Access Query default value if not Match 【发布时间】:2017-04-04 07:06:57 【问题描述】:如何在 Microsoft Access 中制定查询以从这两个源表生成下面的结果表?
表 1
Item Code
---------
Item 01
Item 02
Item 03
表 2
Item Code | Quotation
----------+----------
Default | 5000
Item 01 | 1000
Item 02 | 2000
我希望结果表必须是这样的:
结果表
Item Code | Quotation
----------+----------
Item 01 | 1000
Item 02 | 2000
Item 03 | 5000 <== note no matching item code in table 2
【问题讨论】:
调整了措辞和格式。删除 mysql 标记并用 MS Access 标记替换。 【参考方案1】:我认为将默认值存储在专用表中而不是“投影”其他值会更好:
SELECT t1.ItemCode, t2.Quotation
FROM Table01 t1, Table02 t2
WHERE t1.ItemCode = t2.ItemCode
UNION
SELECT t1.ItemCode, t2.Quotation
FROM Table01 t1, Table02 t2
WHERE t2.ItemCode = 'Default'
AND t1.ItemCode NOT IN ( SELECT ItemCode FROM Table02 );
【讨论】:
【参考方案2】:试试这个:
SELECT T1.No, T1.ItemCode, T2.Quotation
FROM TABLE01 T1
INNER JOIN TABLE02 T2
ON T1.ItemCode = T2.ItemCode
OR (T1.ItemCode <> T2.ItemCode AND T2.ItemCode = 'Default');
【讨论】:
我试过了,但最后一行有一些错误:“缺少(或 [ ....”类似的东西。 我想填充不匹配的行作为默认值 @user7795335 请分享您得到的确切错误以及您正在尝试的内容 嗨。我知道这里有什么问题。 ON后你必须有(),这就是为什么会出现窗口错误。以上是关于如果不匹配,则访问查询默认值的主要内容,如果未能解决你的问题,请参考以下文章
如何为'where'子句中的项目返回一些默认值,这些项目在数据库表列中不匹配(不存在)