如何在mysql中使用in运算符传递变量?

如何在mysql中使用in运算符传递变量?,mysql,Mysql,在sql commed中,我在运算符中使用条件和变量,现在我必须在这个变量中传递值,对于这个变量,正确的语法是什么: select col1 from testtable where col2 in :testval mysql 5.1版您不能。参数化SQL仅适用于单个值。使用以下命令: values = ["foo", "bar", "baz"] variables = { "var%d" % i: value for i, value in enumerate(values) } pla

在sql commed中,我在运算符中使用条件和变量,现在我必须在这个变量中传递值,对于这个变量,正确的语法是什么:

 select col1 from testtable where col2 in :testval

mysql 5.1版

您不能。参数化SQL仅适用于单个值。使用以下命令:

values = ["foo", "bar", "baz"]
variables = { "var%d" % i: value for i, value in enumerate(values) }
placeholders = ", ".join(":%s" % var for var in variables.keys())
sql = "select col1 from testtable where col2 in (" + placeholders + ")"

然后可以将
sql
变量绑定一起使用。

应该是这样的:从col2所在的testtable中选择col1(var1,var2,…)

样品

表名:测试

IdNameRoll\u编号
1R。Nikhil34
2Ashish Rao25
3约瑟夫45
4穆罕默德35
5贾丁·古普塔39

Mysql查询:从Roll_No所在的测试中选择名称(25、35、45)

结果将是:

阿什·饶
约瑟夫

Mohammed

您可以使用ORM库进行更高级别的访问,而不是普通的SQL

例如(摘自):


什么编程语言/环境?蟒蛇?
session.query(MyUserClass).filter(MyUserClass.id.in_((123,456))).all()

# alternative - without the ORM part, just query builder:

session.execute(
    select(
        [MyUserTable.c.id, MyUserTable.c.name], 
        MyUserTable.c.id.in_((123, 456))
    )
).fetchall()