mysql就像查询一样,用逗号分隔数据检查值

时间:2014-11-17 11:21:44

标签: mysql

我有一个包含这样数据的表

+-------+---------------------+------------------------------------------------+--------------------+
|  id   |        name         |                   movieyears                   | length(movieyears) |
+-------+---------------------+------------------------------------------------+--------------------+
| 85530 | Nargis Fakhri       | [2011,2013,2014]                               |                 16 |
| 26683 | Nawazuddin Siddiqui | [1999,2006,2007,2009,2010,2012,2013,2014,2015] |                 46 |
| 14508 | Aditi Rao Hydari    | [2009,2011,2012,2013,2014]                     |                 26 |
+-------+---------------------+------------------------------------------------+--------------------+

挑战是找到演员在过去4年中只活动而不是在任何其他年份的行,所以基本上一个好的查询应该只返回'Nargis Fakhri'的第一行,而不是任何其他演员,我知道Find_In_set但是要找出演员是否存在一年。

2 个答案:

答案 0 :(得分:1)

解决方案会像桌子设计一样丑陋......

select
  id, name
from
  TheTable
where
  movieyears <> '[]' and
  replace(replace(replace(replace(replace(movieyears, '2011', ''), '2012', ''), '2013', ''), '2014', ''), ',', '') = '[]'

答案 1 :(得分:0)

作为一个说明,你的岁月似乎是有序的。如果是这种情况:

select t.*
from tablewithdata t
where substring_index(movieyears, ',', 1) >= '2011';