我收到一个错误:
尝试执行 CALL GetOrderById(2000)
时
BEGIN
SELECT
hsorders.*,
hslineitem.partNum, hslineitem.price
FROM
hsorders
JOIN hslineitem ON hslineitem.orderId = hsorders.orderId
WHERE
orderId = orderId;
END
我需要传递一个
Id
并连接来自具有相同 `orderId` 的两个表的数据。我究竟做错了什么?
最佳答案
您收到错误是因为 orderid
在两个表中。因此,SQL 引擎不知道 orderid
子句指的是哪个 where
。
让我假设您有一个名为 orderid
的参数或变量。
该名称与表中同名的列冲突。这就是我使用前缀的原因。例如,如果 orderid
作为参数传入,我会将其命名为 in_orderid
。如果它是一个局部变量,我可能会使用 v_orderid
。
然后代码看起来像这样:
BEGIN
SELECT o.*, li.partNum, li.price
FROM hsorders o JOIN
hslineitem li
ON li.orderId = o.orderId
WHERE o.orderId = v_orderId;
END;
请注意,我还添加了表别名,以便查询更易于编写和阅读。
关于mysql - 如何修复过程中的 "ambiguous"where 子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49823049/