【发布时间】:2020-01-15 06:17:16
【问题描述】:
我目前尝试使用 Microsoft Access 中的选择查询中的数据更新一个表。在过去的三个小时里,我浏览了很多主题、论坛和主题,但我尝试过的没有任何效果。我对 SQL 比较陌生,所以它变得更加困难。
到目前为止我发现的重要事情:
- 在常规 sql 中使用 where/like 你使用 % 而我必须在 Microsoft Access 中使用 *(无法确认这一点,因为我的更新不起作用)
- 可以在 SET 之后的变量名前面放一个 @ 符号(不确定这是做什么的,但它说明了动态更新)
考虑这些简化的表格
这个应该会收到更新
| Date | Login |
----------------------
| 5.01.2018 | |
| 4.01.2018 | |
| 3.01.2018 | |
| 2.01.2018 | |
| 1.01.2018 | |
这个应该是提供数据的
| User | Attemps |
----------------------
| Guest5 | 2 |
| CEO | 4 |
| IGuest2 | 6 |
| Guest1 | 7 |
| NoGuest | 8 |
我目前尝试使用尝试使用包含 Guest 的用户名登录的用户数量来更新登录值,这些将是下面标有 * 的用户,总计为 4
这将是:
| User | Attemps |
----------------------
| Guest5 | 2 | *
| CEO | 4 |
| IGuest2 | 6 | *
| Guest1 | 7 | *
| NoGuest | 8 | *
假设这张表是从今天 (05.01.2018) 开始的,现在我想用这些数据更新我的另一个表,这样我就会得到一个看起来像这样的表
| Date | Login |
----------------------
| 5.01.2018 | 4 |
| 4.01.2018 | |
| 3.01.2018 | |
| 2.01.2018 | |
| 1.01.2018 | |
到目前为止,我已经浏览了十几个论坛帖子,并且我设法实际设置了一个值,但不是从另一个表中选择它。 例如,这可以正常工作:
UPDATE [Test]
SET [Test].[Login] = 4
WHERE (((Test.Date)=Date()));
当我尝试用实际的表格数据更新它们时,例如
1.
UPDATE [Test]
SET [Test].[Login] = SUM( CASE WHEN [Sheet].[User] LIKE '*Guest*' THEN 1 ELSE 0 END)
WHERE (((Test.Date)=Date()));
2.
UPDATE [Test]
SET [Test].[Login] = (SELECT COUNT(*) FROM [Sheet].[User] WHERE User LIKE '*Guest*')
WHERE (((Test.Date)=Date()));
我总是面对
查询表达式中的语法错误(缺少运算符)
我将在下面使用它来表示我当前得到的内容以及它给我带来的错误:
UPDATE [Test]
SET [Test].[Login] = (SELECT COUNT(*) FROM [Sheet].[User] WHERE [User] LIKE "*Guest*")
WHERE (((Test.Date)=Date()));
找不到 $PATH_HERE..
如果有区别的话,我的工作表会列在查询而不是表下吗?
【问题讨论】:
-
虽然您的 Access 语法可能已关闭,但我也不明白您的更新背后的逻辑。