使用IN和TEXT字段选择查询

时间:2015-05-16 05:53:43

标签: php mysql sql database

我是MySQL的新手。我正在使用数据库。我想使用电影ID获取数据。这里的电影是 TEXT 字段。

+----------+---------+-------+
|    id    |  genre  | movie |
+----------+---------+-------+
|    1     |    1    |   1   |
|    2     |    8    |   2   |
|    3     |    3    |  1,2  |
|    4     |    2    |   2   |
|    5     |    8    |  2,1  |
|    6     |    3    | 1,2,3 |
+----------+---------+-------+

我使用了以下查询,

SELECT id FROM t_table WHERE movie IN (2)

它的给予,id(2,4,5)。但我想要(2,3,4,5,6)。

4 个答案:

答案 0 :(得分:4)

请尝试以下查询。在where子句中使用LIKE运算符。

SELECT id FROM t_table WHERE movie LIKE "2" OR movie LIKE "2,%" OR movie LIKE "%,2" OR movie LIKE "%,2,%"

答案 1 :(得分:2)

改为使用@Override public void onDestroy() { try{ if(mHandleMessageReceiver!=null) unregisterReceiver(mHandleMessageReceiver); }catch(Exception e){} super.onDestroy(); } 方法:

find_in_set

答案 2 :(得分:0)

这是我可以在SQL中使用LIKE运算符给你的最简单的查询。

SELECT id FROM t_table WHERE movie LIKE "2" OR movie  LIKE "%,2," OR movie  LIKE "2,%" OR movie  LIKE "%,2%"

这意味着列中可以有4个条件:

电影栏目中只有2个    电影栏可能有2,在其中    电影栏只有2个,在里面    电影栏只有,2在其中

有用的链接:http://www.w3schools.com/sql/sql_like.asp

我希望这会对你有所帮助。

答案 3 :(得分:0)

上面提到的所有查询都很好,但是当你有'1,2,3'或'2'等数据时会失败。 如果你必须处理OR子句,那么你必须在遇到场景时继续添加OR子句,并且最终会有一个长查询。

我的建议是使用正常用于此目的的正则表达式,功能强大且简洁。对于你我已经设计过 - select * from MOVIES where REGEXP_LIKE (mov, ',?(^[^2]*2[^2]*$)(\s|\S)?,?'); 试一试。