【发布时间】:2012-01-23 22:12:15
【问题描述】:
我正在尝试使用 SELECT - INTO 语句设置变量列表,但是当查询应该找到一行时,我遇到了一些返回空数据的问题。真正奇怪的部分是,如果我选择某个列它可以工作,但它不会与任何其他列一起工作。为了一次解决一个问题,我简化了查询。这是我要运行的内容:
SELECT Product_1 INTO @Product_1
FROM STG_XREF_ELS_PRODUCTS
WHERE MarketName = @ThisMarketName
LIMIT 1;
此语句不起作用,但是如果我输入相同的确切查询但选择不同的字段,它可以正常工作...
SELECT MarketName INTO @Product_1
FROM STG_XREF_ELS_PRODUCTS
WHERE MarketName = @ThisMarketName
LIMIT 1;
值得注意的是,我已经测试以确保这不是 Product_1 实际上为空的情况,我的外部参照表中没有 Product_1 为空的实例。另外,如果我只是从表中选择 Product_1,限制为 1 并且没有 where 子句,我仍然会得到一个空结果。
我也尝试过使用:
set @Product1 = (select Product_1
FROM STG_XREF_ELS_PRODUCTS
WHERE MarketName = @ThisMarketName);
提前感谢您的帮助!
附言
【问题讨论】:
-
仅供参考:MySQL 中的 @ 表示法表示会话变量。在 t-sql 中,@ 表示一个局部变量。在 MySQL 中,局部变量不需要任何前缀。小心在 MySQL 中使用 session 变量,因为它的值可能不是你所期望的(我看到很多使用 MySQL 的 SQL 服务器人员,如果不是这种情况,请继续)
-
你试过用反引号吗?
标签: mysql stored-procedures select