代码之家  ›  专栏  ›  技术社区  ›  ashish

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

  •  -1
  • ashish  · 技术社区  · 6 年前

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

     select col1 from testtable where col2 in :testval
    

    mysql 5.1版

    3 回复  |  直到 6 年前
        1
  •  1
  •   Amadan    6 年前

    不能。参数化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 variables 绑定。

        2
  •  1
  •   Messa    6 年前

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

    例如(摘自 https://stackoverflow.com/a/8603129/196206 ):

    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()
    
        3
  •  0
  •   sanjaya    6 年前

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

    样品

    表名:测试

    IdNameRoll_No
    1R。尼基尔34
    2Ashish Rao25
    3约瑟夫45
    4穆罕默德35
    5贾丁·古普塔39


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

    结果将是:

    阿什·饶
    约瑟夫
    穆罕默德