SQL运算符“IN”不起作用

时间:2017-11-11 05:26:44

标签: mysql sql

非常简单的问题。但是在过去的几个小时里仍然停滞不前。

我在MySQL(phpMyadmin)上执行SQL查询,如:

SELECT * FROM `orderbook` WHERE (`order_to` IN ('49,6')) AND (`rate_change` = 'YES') ORDER BY `createdon` DESC LIMIT 10

这里我只得到与49匹配的结果, 我改变了顺序,如(6,49),然后我得到的结果只有6 ..

请在我失踪的地方帮忙..

感谢。 PRASHANT

4 个答案:

答案 0 :(得分:4)

应该是:

IN (6, 49)  assuming this is a numeric column.  

答案 1 :(得分:1)

您应该使用IN

... WHERE (`order_to` IN (49, 6)) ...

或者如果它们是字符串:

... WHERE (`order_to` IN ('49', '6')) ...

当您传递IN'49,6'时,它会尝试将该确切字符串与字段值匹配。

答案 2 :(得分:1)

正如@gview和@JorgeCampos所说,你不应该引用def validation(x): x = np.array(x, copy=True, subok=True) assert x.ndim == 2, "input must be 2D" assert x.shape[1] == 16, "input must have 16 columns" assert np.issubdtype(x.dtype, np.integer), "input must be integers" assert np.all((x >= 0) & (x <= 9)) y = x[1:-1:2] x[1:-1:2] = ((2 * y) // 10) + ((2 * y) % 10) sumDig = np.sum(x, axis=1) return ['Invalid' if s % 10 else 'Valid' for s in sumDig] 声明中的数字列表。

它部分工作的原因是因为MySQL试图变得聪明。因为IN是一个整数,MySQL正在尝试将字符串order_to转换为数字并获得'49,6'

49

答案 3 :(得分:0)

也许你在那里使用错误的练习'46,6'我希望你想要在46和6中搜索,如果这是真的,那么使用以下查询。

SELECT * FROM `orderbook` WHERE (`order_to` IN ('49','6')) AND (`rate_change` = 'YES') ORDER BY `createdon` DESC LIMIT 10