2011-11-08 155 views
0
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有两个columns->号码,令牌 Tureme有两列 - > ID(主键),leksem 和 文本有一列 - >令牌多个SELECT语句INTO查询在SQL

我的表格:

TextTable为空。

我想要做的是将这些子查询的结果插入到TextTable中。子查询可以单独完美工作。但是,当我将它们放在一起运行时,它不会插入子查询的结果,并且会显示一条错误消息:

子查询返回多个值。当子查询遵循=,!=,<,< =,>,> =或当子查询用作表达式时,这是不允许的。 该声明已被终止。

我该怎么办?


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

ID                                                                                                                    令牌

4        apple 
6        melon 
9        pear 

我想填充TextTable这些值。

+1

您应该使用连接而不是子查询。 – Oded

+1

请显示一些示例数据。子查询甚至返回相同数量的行吗?左侧子查询的行应该如何与右侧的行相关联? –

回答

1
INSERT INTO TextTable 
SELECT DISTINCT ID, Text.Tokens 
FROM Tureme 
JOIN Text ON Tureme.leksem = Text.Tokens 

我想这正是你想要的。

+0

这正是我想要的。非常感谢! – LuckySlevin

1

基于新的意见,这是你想要的select语句

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

你需要加入表中查询 - 否则结果不涉及对方。

+1

甚至提交这个答案有什么意义?可能有0.01%的机会,这是OP想要的(不确定的任意顶级表达)。可以在评论中提出“请更好地定义您的问题”一点。 –

+0

@MartinSmith - 这一点非常明确。这个答案向OP展示了编译器所需要的东西 - 哼哼,它会让他清楚如何更好地解决问题定义或实际的解决方案。是的,它就像一个评论,但它很长,很难在​​评论中阅读。它*甚至可以成为他想做的事 - 因为我们都不知道。 – Hogan

+0

+1在编辑之后! –