gpt4 book ai didi

MS Access 中的 SQL 更新问题 - 操作必须使用可更新的查询

转载 作者:行者123 更新时间:2023-12-03 01:33:59 26 4
gpt4 key购买 nike

我有一个选择查询,它执行一些文本操作以基本上重新格式化字段,以便我可以在另一个表中查找它:

如果我的第一个表有一个像“J1/2”这样的字段,它会在不同的表中查找记录的 ID,并在相应的字段中包含 J1 和 J2。

这一切都运作良好。

现在我想更新原始表,这样我就不必再使用此字符串操作进行查找,但我尝试更新查询以“操作必须使用可更新查询”结束

有什么想法吗?

我的 SELECT 语句:

SELECT DISTINCT
t1.DD,
t1.TN,
t1.DD & " J" & MID(t1.TN,2,1) AS CalculatedStart,
t1.DD & " J" & MID(t1.TN,4,1) AS CalculatedEnd,
t2.ID
FROM t1 INNER JOIN t2
ON (t1.DD & " J" & MID(t1.TN,2,1)=t2.StartLink)
AND (t1.DD & " J" & MID(t1.TN,4,1)=t2.EndLink)
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";

回想一下 - 这工作正常,我从另一端得到了必要的 t2.ID。

所以我想做这样的事情:

UPDATE t1 SET t2ID = (
SELECT Query1.ID
FROM Query1
WHERE t1.DD=Query1.DD
AND t1.TN=Query1.TN
)
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";

只有这个失败了。这是 MS Access 本身内部的问题,因此我无法想象像大多数“操作必须使用可更新查询”问题那样的实际权限问题。

编辑:尝试简化不起作用的情况。

这个 UPDATE 查询很好:

UPDATE t1
SET t2ID="Unknown"
WHERE TN LIKE "J?/?"
AND DD LIKE "M*";

这个失败了(感谢 Goedke - 这个例子显然失败了,因为子查询返回了超过 1 个结果。我过于简单地试图找到我的问题)

UPDATE t1
SET t2ID=(SELECT ID FROM t2)
WHERE TN LIKE "J?/?"
AND DD LIKE "M*";

那么我的子查询语法是否在某种程度上有错误?

编辑:这个 SELECT 语句也很好:

SELECT t1.OA, t1.DD, t1.TN, t1.HATRIS,
query1.DD, query1.TN, query1.ID
FROM t1 INNER JOIN query1
ON t1.DD=query1.DD
AND t1.TN=query1.TN

此外,对上面的 select 语句使用 count 显示每个 (DD,TN) 组合恰好返回 1 个 ID

编辑:

我现在遇到的最简单的情况 - 使用各种 SELECT 语句,我现在有一个只有 2 列的表 - t1 的主键和我想要插入到 t1 中的值。

我还是不会写

UPDATE t1 SET t1.f2 = (SELECT t2.f2 FROM t2 WHERE t2.f1 = t1.f1)

其中 t1 的主键是 f1。即使添加 WHERE t1.f1 IN (SELECT f1 FROM t2) 也没有帮助。 (添加是为了消除子查询返回0结果的可能性)

最佳答案

我必须权衡 David W. Fenton 对 OP 的评论。

这是 Jet/ACE 非常恼人的问题。但请尝试以下任一方法:

  1. 转到查询属性(单击 Pane 的背景显示表格)并设置将“唯一记录”更改为"is"
  2. 选项 1 相当于添加看起来有点奇怪DISTINCTROW 关键字SELECT 子句,例如

:

UPDATE DISTINCTROW tblClient 
INNER JOIN qryICMSClientCMFinite
ON tblClient.ClientID = qryICMSClientCMFinite.ClientID
SET tblClient.ClientCMType = "F";

这解决了涉及此错误消息的许多问题,这几乎是荒谬的。

简而言之,这就是 MS Access - 如果您不知道问题 x 的商业 secret 解决方法,您可能需要花费数天时间才能找到答案。要了解 10,000 种解决方法,就需要对 Access 进行编程。对于不熟悉的人来说,这足够是一个警告吗?

关于MS Access 中的 SQL 更新问题 - 操作必须使用可更新的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/537161/

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