【问题标题】:Multiple SELECT statements in INSERT INTO query in SQLSQL 中 INSERT INTO 查询中的多个 SELECT 语句
【发布时间】:2011-11-08 11:07:08
【问题描述】:
 INSERT INTO TextTable(Number, Tokens)  
 SELECT 
 (SELECT  ID FROM  Tureme WHERE leksem IN  
 (SELECT  Tokens FROM  Text)),
 (SELECT  Tokens FROM Text WHERE Tokens IN 
 (SELECT  leksem FROM Tureme));

TextTable 有两列-> Number,Tokens Tureme 有两列 -> ID(Primary Key), leksem 和 文本有一列 -> 标记

我的桌子:

TextTable 为空。

我正在尝试将这些子查询的结果插入到 TextTable 中。子查询单独工作完美。但是,当我一起运行它时,它不会插入子查询的结果,并且会报错:

子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。 声明已终止。

我该怎么办?


第一个子查询返回:                      第二个子查询返回:

ID                                                         令牌

4                              apple
6                              melon
9                              pear

我想用这些值填充 TextTable。

【问题讨论】:

  • 您应该使用联接而不是子查询。
  • 请展示一些示例数据。子查询甚至返回相同数量的行吗?左侧子查询中的行应该如何与右侧的行相关联?

标签: sql select insert


【解决方案1】:

根据您的新 cmets,这就是您想要的 select 语句

SELECT ID, Text.Tokens
FROM Tureme
JOIN Text ON Tureme.leksem = Text.Tokens

您需要连接查询中的表 -- 否则结果不会相互关联。

【讨论】:

  • 提交这个答案有什么意义?这可能是 OP 想要的(不确定的任意顶部表达式)的可能性为 0.01%。可以在评论中提出“请更好地定义您的问题”这一点。
  • @MartinSmith - 重点很清楚。这个答案向 OP 展示了编译器想要什么——希望它能让他清楚如何更好地定义问题或实际的解决方案是什么。是的,它就像一条评论,但它很长,而且很难在评论中阅读。这可能甚至是他想做的——因为我们都不知道。
  • 我需要插入而不重复。感谢您的努力。
【解决方案2】:
INSERT INTO TextTable
SELECT DISTINCT ID, Text.Tokens
FROM Tureme
JOIN Text ON Tureme.leksem = Text.Tokens

我想这正是你想要的。

【讨论】:

  • 这正是我想要的。非常感谢!
猜你喜欢
  • 2018-12-13
  • 2021-01-19
  • 1970-01-01
  • 2012-10-18
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多