mysql - 如何处理 MySQL 中的 session 值解释

标签 mysql sql

我有以下架构。

DROP TABLE IF EXISTS REF_CONNECTION1;
CREATE TABLE  REF_CONNECTION1 (
  BPIN INT(11) DEFAULT NULL,
  RIN INT(11) DEFAULT NULL,
  SRC_RIN INT(11) DEFAULT NULL,
  PRIMARY KEY (BPIN,RIN,SRC_RIN)
);

INSERT INTO REF_CONNECTION1 VALUE(14,1,2);
INSERT INTO REF_CONNECTION1 VALUE(14,1,3);
INSERT INTO REF_CONNECTION1 VALUE(14,1,4);
INSERT INTO REF_CONNECTION1 VALUE(14,1,5);
INSERT INTO REF_CONNECTION1 VALUE(14,1,6);
INSERT INTO REF_CONNECTION1 VALUE(14,1,7);

SET @S1 = '2,3,4';

SELECT * FROM REF_CONNECTION1 WHERE SRC_RIN IN (@S1);

结果集仅给出 1 行,但它应该给出 3 行。我理解为什么会发生这种情况,因为它实际上正在转换为以下查询

SELECT * FROM REF_CONNECTION1 WHERE SRC_RIN IN ('2,3,4');

但我希望它看起来像下面的查询。

SELECT * FROM REF_CONNECTION1 WHERE SRC_RIN IN (2,3,4);

我该怎么做?非常感谢任何帮助。

最佳答案

您需要为此准备一份声明:

SET @S1 = '2,3,4';

set @sql = concat('SELECT * FROM REF_CONNECTION1 WHERE SRC_RIN IN (', @S1, ');');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;

关于mysql - 如何处理 MySQL 中的 session 值解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17614397/

相关文章:

mysql - 如何设置mysql查询的最大执行时间?

php - 日期列是varchar如何从01-01-2019到今天选择数据

php - PDO 只返回 mysql 的一半结果

mysql - 如何为POS系统设计出色的数据库结构

SQL:ORDER BY 两列混合,不基于优先级

php - 发送 QUERY 数据包时出错。 PID=9565

php - Mysql搜索字段不同的顺序

sql - 多个字符与 LIKE 子句匹配

sql - PostgreSQL如何按小时获取订单

mysql - 我如何通过多个值过滤一列(严格过滤)?