如何使用Distinct多列?

时间:2012-04-03 06:24:49

标签: sql

$q=mysql_query("SELECT DISTINCT zone, location FROM service_info WHERE city='".$_REQUEST['city']."' and sr_no=1");

我希望区域和位置不同

2 个答案:

答案 0 :(得分: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(DISTINCT zone SEPARATOR '<br />')

答案 1 :(得分:0)

如果您不需要单独的列,则可以执行以下操作:

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