根据所需条件过滤 table 中的数据
Filtering data in a table for a required condition
别在意标题,具体问题我想不通。请在下面找到我的问题。
我试图以这样的方式过滤掉数据,结果集不应包含与给定年份对应的品牌和型号。比如我给的是2014,结果集不应该包含"Acura - ILX and BMW - X5"。它应该 return 剩余品牌和型号。
下面是 table 结构。
Id | Make | Model | Year
---------------------------------
1 | Acura | ILX | 2012
2 | Acura | ILX | 2013
3 | Acura | ILX | 2014
4 | Acura | ILX | 2015
5 | Acura | RL | 2012
6 | Acura | RL | 2013
7 | Acura | RL | 2015
8 | BMW | X5 | 2012
9 | BMW | X5 | 2013
10 | BMW | X5 | 2014
11 | BMW | Q7 | 2011
12 | BMW | Q7 | 2012
13 | BMW | Q7 | 2013
14 | BMW | Q7 | 2015
给出2014年的预期结果。
Id | Make | Model | Year
---------------------------------
5 | Acura | RL | 2012
6 | Acura | RL | 2013
7 | Acura | RL | 2015
11 | BMW | Q7 | 2011
12 | BMW | Q7 | 2012
13 | BMW | Q7 | 2013
14 | BMW | Q7 | 2015
SELECT * FROM `table` WHERE (Make,Model) NOT IN
(
SELECT Make, Model FROM `table` WHERE Year = 2014
);
Fiddle 这里:http://sqlfiddle.com/#!9/6ae10/1
我的同事帮助我找出了针对上述情况的快速响应。查询是
select make,model,group_concat(year ORDER BY year ASC) as yearList from apd_cars
group by model,make
having yearList NOT like '%2014%'
order by make,model;
别在意标题,具体问题我想不通。请在下面找到我的问题。
我试图以这样的方式过滤掉数据,结果集不应包含与给定年份对应的品牌和型号。比如我给的是2014,结果集不应该包含"Acura - ILX and BMW - X5"。它应该 return 剩余品牌和型号。
下面是 table 结构。
Id | Make | Model | Year
---------------------------------
1 | Acura | ILX | 2012
2 | Acura | ILX | 2013
3 | Acura | ILX | 2014
4 | Acura | ILX | 2015
5 | Acura | RL | 2012
6 | Acura | RL | 2013
7 | Acura | RL | 2015
8 | BMW | X5 | 2012
9 | BMW | X5 | 2013
10 | BMW | X5 | 2014
11 | BMW | Q7 | 2011
12 | BMW | Q7 | 2012
13 | BMW | Q7 | 2013
14 | BMW | Q7 | 2015
给出2014年的预期结果。
Id | Make | Model | Year
---------------------------------
5 | Acura | RL | 2012
6 | Acura | RL | 2013
7 | Acura | RL | 2015
11 | BMW | Q7 | 2011
12 | BMW | Q7 | 2012
13 | BMW | Q7 | 2013
14 | BMW | Q7 | 2015
SELECT * FROM `table` WHERE (Make,Model) NOT IN
(
SELECT Make, Model FROM `table` WHERE Year = 2014
);
Fiddle 这里:http://sqlfiddle.com/#!9/6ae10/1
我的同事帮助我找出了针对上述情况的快速响应。查询是
select make,model,group_concat(year ORDER BY year ASC) as yearList from apd_cars
group by model,make
having yearList NOT like '%2014%'
order by make,model;