0

我不是 SQL Server 专家。我正在尝试执行查询。该查询依赖于一个函数来拆分 CSV 并在表上进行连接。它是一个非常基本的查询,如下所示:

SELECT 
  *
FROM
 [Order]
WHERE
 dbo.ConvertIDListToTable('1,2,3,4', ',') l INNER JOIN Order o ON l.item=o.ID

当我执行查询时,我收到以下错误:

An expression of non-boolean type specified in a context where a condition is expected, near 'l'.

我究竟做错了什么?这必须是语法上的。我一直盯着它看,但一切对我来说都是正确的。谢谢你。

4

3 回答 3

1

从语法上讲,你INNER JOIN的 s 应该在你的WHERE语句之前,此外,你不需要WHERE这里的语句。

不知道确切的代码ConvertIDListToTable是一个障碍,但假设它返回一个表,我认为你需要:

SELECT *
FROM dbo.ConvertIDListToTable('1,2,3,4', ',') l 
INNER JOIN Order o ON l.item=o.ID
于 2013-02-07T15:56:09.447 回答
0

不能在 WHERE 子句中使用 JOIN。这确实是一个语法问题。

查看 SQL Server SELECT 语法:http: //msdn.microsoft.com/en-us/library/ms189499.aspx

您应该在 WHERE 子句之前加入。如果您需要有关查询的更多帮助,请说明您希望它做什么。

于 2013-02-07T15:56:15.917 回答
0

我相信这个查询结构来自mysql

在 SQL Server 中,您可以这样编写:

SELECT 
  *
FROM
 [Order] o 
 Inner join dbo.ConvertIDListToTable('1,2,3,4', ',') l
   ON l.item=o.ID
于 2013-02-07T15:57:22.937 回答