使用不同的where子句组合两个mysql查询
我有多个地点的结果。位置存储在一个表中,结果存储在另一个表中。我用荷兰的一个位置查询每个结果。 我将这些结果按省份分组。之后,我使用Lattude和经度在谷歌地图上标记每个省份的结果 查询:使用不同的where子句组合两个mysql查询,mysql,subquery,union,Mysql,Subquery,Union,我有多个地点的结果。位置存储在一个表中,结果存储在另一个表中。我用荷兰的一个位置查询每个结果。 我将这些结果按省份分组。之后,我使用Lattude和经度在谷歌地图上标记每个省份的结果 查询: SELECT loc.location_id as loc_id, loc.lat, loc.long, count(res.unique_id) as aantal, loc.land, loc.provincie, loc.gemeente, loc.plaats FROM `vj_res
SELECT loc.location_id as loc_id, loc.lat, loc.long, count(res.unique_id) as aantal, loc.land, loc.provincie, loc.gemeente, loc.plaats
FROM `vj_results_1618048029` AS res, vj_location AS loc
WHERE res.time > '1324635105' AND res.time < '1327313506' AND res.search_id='8070' AND (loc.lat != '0' AND loc.long != '0') AND res.location_id != '' AND res.location_id = loc.location_id AND loc.land = 'Nederland'
GROUP BY loc.provincie
ORDER BY loc.land, loc.provincie, loc.gemeente, loc.plaats DESC
问题是我收到的经度是组中第一个结果的最窄位置。对弗莱沃兰来说,这是一座城市“莱利斯塔德”,对泽兰来说,这是一座城镇“托伦”。在《弗里斯兰》(friesland)一书中,这是准确的,因为第一个结果没有指定一个城镇,只是指定了一个省
要获得正确的纬度和经度,我将查询如下内容:
SELECT location_id as loc_id, loc.lat, loc.long, loc.land, loc.provincie, loc.gemeente, loc.plaats
FROM vj_location AS loc
WHERE (loc.lat != '0' AND loc.long != '0') AND loc.land = 'Nederland' AND loc.gemeente = '' AND loc. plaats = ''
GROUP BY loc.provincie
ORDER BY loc.land, loc.provincie, loc.gemeente, loc.plaats DESC
Wich会给我这些结果:
loc_id lat long land provincie gemeente plaats
19 52.132633 5.291266 Nederland
697 52.9476012 6.6230586 Nederland Drenthe
1257 52.5279781 5.5953508 Nederland Flevoland
401 53.1641642 5.7817542 Nederland Friesland
235 52.045155 5.8718234 Nederland Gelderland
2732 53.2887213 6.7060867 Nederland Groningen
860 51.4427238 6.0608726 Nederland Limburg
255 51.4826537 5.2321687 Nederland Noord-Brabant
407 52.5205869 4.788474 Nederland Noord-Holland
884 52.4387814 6.5016411 Nederland Overijssel
3796 52.119508 5.1943653 Nederland Utrecht
3692 51.325362 3.6640464 Nederland Zeeland
705 52.0207975 4.4937836 Nederland Zuid-Holland
我需要将它们组合到一个查询中,第一个查询的结果和组以及第二个查询的晶格度和经度。有人能帮忙吗
提前谢谢
编辑:
我尝试使用联合,但它返回一个错误:
1222-使用的SELECT语句具有不同的列数
我尝试使用子查询,但它会减慢查询速度。。现在运行查询需要很长时间
第二次编辑:多亏了@johntetwoo,我编辑了联合查询,使其正常工作。
我不得不删除order by,因为我的mysql不喜欢它,不需要它,这是为了调试时的可读性。
我还在第二个查询中更改了select的顺序,以便将零放在右边的列中
新查询
现在效果很好,谢谢!
我只是想知道它是否可以合并成一行。我现在有一行有结果编号和省份,另一行有相同的省份和正确的经度和纬度。如果这些可以结合起来,那将是完全完美的 将字段aantal添加到第二个查询并重新合并将字段aantal添加到第二个查询并重新合并因为第二个查询没有aantal列,所以将其删除 试试这个:
SELECT *
FROM
(SELECT loc.location_id as loc_id, loc.lat, loc.long, count(res.unique_id) as aantal, loc.land, loc.provincie, loc.gemeente, loc.plaats
FROM `vj_results_1618048029` AS res, vj_location AS loc
WHERE res.time > '1324635105' AND res.time < '1327313506' AND res.search_id='8070' AND (loc.lat != '0' AND loc.long != '0') AND res.location_id != '' AND res.location_id = loc.location_id AND loc.land = 'Nederland'
GROUP BY loc.provincie
ORDER BY loc.land, loc.provincie, loc.gemeente, loc.plaats DESC
UNION
SELECT location_id as loc_id, loc.lat, loc.long, loc.land, loc.provincie, loc.gemeente, loc.plaats , 0 as aantal
FROM vj_location AS loc
WHERE (loc.lat != '0' AND loc.long != '0') AND loc.land = 'Nederland' AND loc.gemeente = '' AND loc. plaats = ''
GROUP BY loc.provincie
ORDER BY loc.land, loc.provincie, loc.gemeente, loc.plaats DESC) as iTable
这是因为第二个查询没有aantal列 试试这个:
SELECT *
FROM
(SELECT loc.location_id as loc_id, loc.lat, loc.long, count(res.unique_id) as aantal, loc.land, loc.provincie, loc.gemeente, loc.plaats
FROM `vj_results_1618048029` AS res, vj_location AS loc
WHERE res.time > '1324635105' AND res.time < '1327313506' AND res.search_id='8070' AND (loc.lat != '0' AND loc.long != '0') AND res.location_id != '' AND res.location_id = loc.location_id AND loc.land = 'Nederland'
GROUP BY loc.provincie
ORDER BY loc.land, loc.provincie, loc.gemeente, loc.plaats DESC
UNION
SELECT location_id as loc_id, loc.lat, loc.long, loc.land, loc.provincie, loc.gemeente, loc.plaats , 0 as aantal
FROM vj_location AS loc
WHERE (loc.lat != '0' AND loc.long != '0') AND loc.land = 'Nederland' AND loc.gemeente = '' AND loc. plaats = ''
GROUP BY loc.provincie
ORDER BY loc.land, loc.provincie, loc.gemeente, loc.plaats DESC) as iTable
现在效果很好,谢谢!我只是想知道它是否可以合并成一行。我现在有一行有结果编号和省份,另一行有相同的省份和正确的经度和纬度。如果这些可以结合起来,那将是完全完美的!现在效果很好,谢谢!我只是想知道它是否可以合并成一行。我现在有一行有结果编号和省份,另一行有相同的省份和正确的经度和纬度。如果这些可以结合起来,那将是完全完美的!
SELECT *
FROM
(SELECT loc.location_id as loc_id, loc.lat, loc.long, count(res.unique_id) as aantal, loc.land, loc.provincie, loc.gemeente, loc.plaats
FROM `vj_results_1618048029` AS res, vj_location AS loc
WHERE res.time > '1324635105' AND res.time < '1327313506' AND res.search_id='8070' AND (loc.lat != '0' AND loc.long != '0') AND res.location_id != '' AND res.location_id = loc.location_id AND loc.land = 'Nederland'
GROUP BY loc.provincie
ORDER BY loc.land, loc.provincie, loc.gemeente, loc.plaats DESC
UNION
SELECT location_id as loc_id, loc.lat, loc.long, loc.land, loc.provincie, loc.gemeente, loc.plaats , 0 as aantal
FROM vj_location AS loc
WHERE (loc.lat != '0' AND loc.long != '0') AND loc.land = 'Nederland' AND loc.gemeente = '' AND loc. plaats = ''
GROUP BY loc.provincie
ORDER BY loc.land, loc.provincie, loc.gemeente, loc.plaats DESC) as iTable