gpt4 book ai didi

sql - 列名不明确,我的 WHERE 语句已被用于其他目的

转载 作者:行者123 更新时间:2023-12-02 02:04:49 25 4
gpt4 key购买 nike

所以我遇到了这个问题,我需要一个 INNER JOIN 来将我的图像表连接到我的产品表,并且我已经尝试指定每个列名称与表的连接,如下所示。当涉及到我的 WHERE 语句时,这就是它变得棘手的地方。因为我需要将我的 ProductID 保存为一个名为 pid 的变量以用于其他代码隐藏目的。

SELECT * FROM ProductTBL p
INNER JOIN ImageTBL img on p.ProductID = img.ProductID
WHERE (ProductID = @pid)

当我运行这段代码时,它会告诉我 ProductID 是一个不明确的列名,当我尝试像这样进一步指定我的 Where 语句:

WHERE (p.ProductID = @pid)

它会给我另一个错误,告诉我没有数据绑定(bind)到我从中取出数据的某些行。只有当我没有像上面那样指定 Where 语句时才会出现此错误。

任何输入都将不胜感激:)

PS:如果有什么要说的,我正在运行 MSSQL。

最佳答案

我知道有两种方法可以做到这一点。第二种方式可能是推荐的方式(它应该运行得更快)。

方式一)

在两步语句中运行它。我认为您不能在内部 SELECT 语句中使用 *:

SELECT * FROM (
SELECT p.ProductID, [other needed fields]
FROM ProductTBL p
INNER JOIN ImageTBL img on p.ProductID = img.ProductID
) as x
WHERE (ProductID = @pid)

内部 SELECT p.ProductID 表示从 ProductTBL 显式返回 ProductID。然后可以在 WHERE 语句中使用该 ProductID 字段,因为它位于外部 SQL 语句中。

方式二)

将“WHERE”条件作为连接的一部分

SELECT *
FROM ProductTBL p
INNER JOIN ImageTBL img on p.ProductID = img.ProductID AND p.ProductID = @pid

关于sql - 列名不明确,我的 WHERE 语句已被用于其他目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com