Mysql 5.7 - select where json
The problem is that JSON_EXTRACT will return values as an array. 

See this example output:

mysql&gt; SELECT * FROM my_table;
+--------+-----------+---------------------------------------------------------------+
| userId | name      | filters                                                       |
+--------+-----------+---------------------------------------------------------------+
|      1 | John Doe  | [{"Year": 2004, "SportID": 3}, {"Year": 2005, "SportID": 27}] |
|      2 | Jane Doe  | [{"Year": 2004, "SportID": 4}]                                |
|      3 | Sarah Doe | [{"Year": 2005, "SportID": 1}]                                |
+--------+-----------+---------------------------------------------------------------+
3 rows in set (0.00 sec)

mysql&gt; SELECT name, filters-&gt;"$**.Year" from my_table;
+-----------+----------------------+
| name      | filters-&gt;"$**.Year" |
+-----------+----------------------+
| John Doe  | [2004, 2005]         |
| Jane Doe  | [2004]               |
| Sarah Doe | [2005]               |
+-----------+----------------------+
3 rows in set (0.00 sec)


Keep in mind the -&gt; operator is shorthand for JSON_EXTRACT.

Because of this I was able to answer the question "Which people had a row for Year 2004?" by using JSON_CONTAINS like this: 

mysql&gt; SELECT name, filters FROM my_table
    -&gt; WHERE JSON_CONTAINS(filters-&gt;'$**.Year', '2004');
+----------+---------------------------------------------------------------+
| name     | filters                                                       |
+----------+---------------------------------------------------------------+
| John Doe | [{"Year": 2004, "SportID": 3}, {"Year": 2005, "SportID": 27}] |
| Jane Doe | [{"Year": 2004, "SportID": 4}]                                |
+----------+---------------------------------------------------------------+
2 rows in set (0.00 sec)


Unfortunately that won't let you answer questions with a range, such as "Which people had rows for Year > 2004?".