我是php和MySql的新手,我正在尝试编写一个php脚本来查询MySQL表。 我花了几个小时搜索stackoverflow,但不太了解类似问题的一些答案,如How to select unique values from a table?和MYSQL + Select 2 columns - 1 being Unique
我有一个带有“位置”列和“地址”列的表格以及其他一些列,其中包含有关该位置的其他信息等。该位置是例如商店的名称。地址栏保存该商店的街道地址。
商店有时在不同的地址有多个商店,我需要有一个查询,显示表格中的所有数据,如果地址是唯一的,该地点只会多次显示。
我有数据库的php连接和数据库的选择,但是需要MySql查询的帮助。
我在该位置使用了GROUP BY功能,但所有地址都放在同一位置。
这是我使用过的,但只显示了唯一的位置。
<?php
mysql_connect("localhost","username","password");
mysql_select_db("dbname");
$sql=mysql_query("SELECT * from table GROUP BY location");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>
如果地址是唯一的,如何进行查询以允许多次显示位置?
提前感谢你..
不确定如何发布表结构,但这是我可以从myphpadmin
获得的**Column** **Type** **NULL** **Comments**
_id int(11) No auto_increment
location text No Shop Name
address text No Shop Address
suburb varchar(30) No
state varchar(3) No
longitude float No longitude
latitude float No latitude
date date No
time time No
我所追求的是具有唯一地址的所有地点。某些位置将具有相同的名称和相同的地址,但某些位置将具有相同的名称,但具有不同的地址。 例如..如果表格看起来像
**Location** **Address**
Target Pacific Fair
Kmart Pacific Fair
Kmart Robina
Kmart Southport
Target Pacific Fair
Target Tweed City
Kmart Pacific Fair
Best and Less Pacific Fair
我希望结果显示
**Location** **Address**
Target Pacific Fair
Target Tweed City
Kmart Pacific Fair
Kmart Robina
Kmart Southport
Best and Less Pacific Fair
答案 0 :(得分:1)
如果我理解你的问题,你需要按位置和地址分组:
SELECT location, address FROM table GROUP BY location, address
或者您可以使用DISTINCT:
SELECT DISTINCT location, address FROM table
答案 1 :(得分:0)
我假设您的案例可能比您在数据中显示的案件多。您可以在col1中使用NULL,您可以将名称仅发生在col1中或仅发生在col2中等。
SELECT a.name, c1.`count`, c2.`count`
FROM (SELECT col1 AS name FROM `Table` UNION SELECT col2 FROM `Table`) a
LEFT JOIN (SELECT col1, COUNT(*) AS `count` FROM `Table` GROUP BY col1) c1
ON a.name = c1.col1
LEFT JOIN (SELECT col2, COUNT(*) AS `count` FROM `Table` GROUP BY col2) c2
ON a.name = c2.col2;
说明: 派生表a是出现在任一列中的所有名称的并集。然后再创建两个派生表,每个表都有一个来自col1的每个名称,以及它出现次数的计数,然后是另一个类似于col2中名称的派生故事。