Sql 如何对多个列使用Distinct?
我希望分区和位置都不同,如果不需要单独的列,则可以执行以下操作:Sql 如何对多个列使用Distinct?,sql,Sql,我希望分区和位置都不同,如果不需要单独的列,则可以执行以下操作: $q=mysql_query("SELECT DISTINCT zone, location FROM service_info WHERE city='".$_REQUEST['city']."' and sr_no=1"); 如果您只想检索一个不同区域的列表和一个不同位置的列表,这两个区域和位置都符合条件,那么您可能应该为每个区域发出两个单独的查询,因为这两个列表彼此不相关,因此在一个查询中检索它们是没有意义的。似乎您只是想
$q=mysql_query("SELECT DISTINCT zone, location FROM service_info WHERE city='".$_REQUEST['city']."' and sr_no=1");
如果您只想检索一个不同区域的列表和一个不同位置的列表,这两个区域和位置都符合条件,那么您可能应该为每个区域发出两个单独的查询,因为这两个列表彼此不相关,因此在一个查询中检索它们是没有意义的。似乎您只是想并排显示这两个列表,这应该在表示层中完成,而不是在数据库中 作为另一种选择,你可能会考虑这样的事情:
SELECT
zone
FROM
service_info
WHERE
city='".$_REQUEST['city']."' and sr_no=1
UNION
SELECT
location
FROM
service_info
WHERE
city='".$_REQUEST['city']."' and sr_no=1
SELECT
(
SELECT GROUP_CONCAT(DISTINCT zone)
FROM service_info
WHERE city='".$_REQUEST['city']."' AND sr_no=1
) AS zones
,
(
SELECT GROUP_CONCAT(DISTINCT location)
FROM service_info
WHERE city='".$_REQUEST['city']."' AND sr_no=1
) AS locations
上面的查询将返回一行两列,每列包含逗号分隔的项目列表。如果希望列表改为列,可以显式指定换行符符号作为分隔符,如下所示:
SELECT
zone
FROM
service_info
WHERE
city='".$_REQUEST['city']."' and sr_no=1
UNION
SELECT
location
FROM
service_info
WHERE
city='".$_REQUEST['city']."' and sr_no=1
SELECT
(
SELECT GROUP_CONCAT(DISTINCT zone)
FROM service_info
WHERE city='".$_REQUEST['city']."' AND sr_no=1
) AS zones
,
(
SELECT GROUP_CONCAT(DISTINCT location)
FROM service_info
WHERE city='".$_REQUEST['city']."' AND sr_no=1
) AS locations
GROUP_CONCAT(不同区域分隔符“
”)
您可以尝试这个解决方案:您需要在同一列中还是在两个不同的列中使用区域
和位置