获取单元格值并在 INSERT 语句中使用它 (MS ACCESS)

Posted

技术标签:

【中文标题】获取单元格值并在 INSERT 语句中使用它 (MS ACCESS)【英文标题】:Get cell value and use it in an INSERT statement (MS ACCESS) 【发布时间】:2016-03-12 15:05:01 【问题描述】:

我想使用来自不同表的值插入一条记录

只是为了说明:

INSERT INTO tbl1 
VALUES([value1], [value2], NOW())
value1 是一个数字,来自不同表格中随机行中的单元格 value2 是另一个数字,它来自另一个表中随机行中的单元格

这是我的尝试:

INSERT INTO transactions(itemid, userid, tdate) 
VALUES((SELECT TOP 1 ID FROM items ORDER BY RND(ID)), (SELECT TOP 1 ID FROM users ORDER BY RND(ID)), (NOW()))

但这会引发错误:

查询输入必须至少包含一个表或查询

任何帮助将不胜感激。

谢谢!

【问题讨论】:

这怎么行?如果要插入文本字段,为什么要使用日期/时间函数。 @GordonLinoff 我的意思是使用当前日期作为第三个参数。抱歉,示例不一致。我现在会更新问题。 你想要SELECT TOP 1 ID FROM items给你什么?这是否等同于Min(ID) @Rian 寻找您信任的数据库专家。询问他或她在没有ORDER BY 的情况下SELECT TOP 1 是否可靠 @Rian 您可能需要一个order by 来保证您返回的ID。这一切看起来都是个坏主意。 【参考方案1】:

您可以重写您的语句以使用SELECT 而不是VALUES

INSERT INTO  transactions(itemid, userid, tdate) 
    SELECT   TOP 1 items.ID, users.ID, NOW() 
    FROM     items, users
    ORDER BY Rnd(-(1000*items.ID*users.ID)*Time()), 
             items.ID, users.ID

编辑:我添加了ORDER BY 子句,这将导致更多随机排序顺序。负值将确保一种随机化。另见this question。

Edit2:扩展 ORDER BY 子句以确保 TOP 1 不必处理关系。

【讨论】:

无法使用联接,因为我从中获取项目 ID 的行与我从中获取用户 ID 的行之间没有直接链接。条件也不是必须的。感谢您的意见 现在测试更新的解决方案。很快就会回复你。谢谢! 这会使用我其他表中的随机用户 ID 和项目 ID 添加记录,这是我想要完成的。唯一的问题是,当我尝试多次执行它时,有时会添加 1 行,有时会添加 2 行,有时会添加 3 行。知道为什么吗? @HansUp 我不明白为什么会有重复和联系(假设其他表具有正确的主键。) @shawnt00 我想我误入歧途了,所以删除了那些 cmets。对不起。

以上是关于获取单元格值并在 INSERT 语句中使用它 (MS ACCESS)的主要内容,如果未能解决你的问题,请参考以下文章

将单元格值从 Excel 拉入 Word(运行时错误 429)

如何通过 JavaScript 获取 html 表格 td 单元格值?

如何在 React-Table 上获取单元格值?

是否可以使用 excel 单元格值 - 作为 T-SQL 语句中的参考?

如何使用 Angular 6 + Handsontable 根据另一个单元格值仅更改一个单元格值?

使用单元格格式获取 JTable 整数单元格值