$result1 = mysql_query("SELECT distinct city FROM postcodedb WHERE web='ALR' ORDER BY city") or die(mysql_error());
while($row1=mysql_fetch_array($result1)) {
$city = $row1['city'];
$result = mysql_query("SELECT * FROM postcodedb WHERE area='$city' AND city='$city' LIMIT 1") or die(mysql_error());
while($row=mysql_fetch_array($result)) {
$city = $row['city'];
}
}
所以在数据库记录中看起来像这样:
---------------------
id city area
---------------------
1 Bromley Bromley <- I need this record
2 Bromley other1
3 Bromley other2
4 Ilford Ilford <- and then this one
5 Ilford other1
---------------------
并且有更多城市和地区分配到这些城市。
所以,我想要获得的是 不同的城市的列表,但对我来说重要的是我获得了两个{{1}的行ID }和city
是一样的??
这个查询可以正常运行,但有点慢,我相信有更好的方法可以达到相同的效果吗?
我希望我能清楚地解释清楚。
非常感谢你!
答案 0 :(得分:1)
如果城市和地区相同,那么这应该是查询中的一个条件:
SELECT distinct city
FROM postcodedb
WHERE web = 'ALR' and city = area
ORDER BY city;
理想情况下,没有重复项,因此您可以删除distinct
:
SELECT city
FROM postcodedb
WHERE web = 'ALR' and city = area
ORDER BY city;
对于此查询,您需要postcodedb(web, city, area)
上的索引才能获得最佳效果。
答案 1 :(得分:0)
$result1 = mysql_query("SELECT distinct city FROM postcodedb WHERE web = 'ALR' and city = area ORDER BY city") or die(mysql_error());
while($row1=mysql_fetch_array($result1)) {
$city = $row1['city'];
}
1个查询而不是2.可见的性能提升。工作得那么快。
谢谢你们。