获取单元格值并在 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 单元格值?
是否可以使用 excel 单元格值 - 作为 T-SQL 语句中的参考?