Php mysql的select查询中的Distinct不起作用

Php mysql的select查询中的Distinct不起作用,php,mysql,database,select,distinct,Php,Mysql,Database,Select,Distinct,我在mysql数据库的select查询中使用了distinct,如下所示 $query=mysql_real_escape_string($_GET['query']); $query_for_result=mysql_query("SELECT DISTINCT * FROM vendor LEFT JOIN branches ON branches.vendor_id = vendor.vendor_id WHERE (vendor.name LIKE '%".$query."%' OR v

我在mysql数据库的select查询中使用了distinct,如下所示

$query=mysql_real_escape_string($_GET['query']);
$query_for_result=mysql_query("SELECT DISTINCT *
FROM vendor
LEFT JOIN branches ON branches.vendor_id = vendor.vendor_id
WHERE
(vendor.name LIKE '%".$query."%'
OR vendor.description LIKE '%".$query."%'
OR branches.city LIKE '%".$query."%')");
$qrow=mysql_fetch_array($query_for_result);
if(empty($qrow)){
   while($qrow=mysql_fetch_array($query_for_result)){

          Some Code to display result 
<?php
   }
    mysql_close();
}
    ?>
$query=mysql\u real\u escape\u字符串($\u GET['query']);
$query\u for\u result=mysql\u query(“选择DISTINCT*
来自供应商
左连接分支上的分支。vendor\u id=vendor.vendor\u id
哪里
(类似“%”$query的vendor.name。“%”
或vendor.description,如“%”“$query.”
或类似“%$query.”“%”的分支机构;
$qrow=mysql\u fetch\u数组($query\u以获取\u结果);
如果(空($qrow)){
while($qrow=mysql\u fetch\u数组($query\u for\u result)){
显示结果的一些代码

问题是,它会多次显示每个结果,并根据分支机构表中的城市显示每个结果,(意味着:如果供应商表中的结果在分支机构表中有5个城市,它将显示5次)

它正在工作。您返回的是两个表中的所有列值。因此,如果供应商有5个城市,则有5个不同的结果:

Vendor   City
A        London
A        New York
B        London
C        London
这些行都不相同,因此它们是查询的不同结果

假设您想要一份不同的供应商列表,那么您需要这样做:

SELECT DISTINCT vendor.*
FROM vendor
LEFT JOIN branches ON branches.vendor_id = vendor.vendor_id
WHERE
(vendor.name LIKE '%".$query."%'
OR vendor.description LIKE '%".$query."%'
OR branches.city LIKE '%".$query."%')");

DISTINCT
有效-但是您的期望被误导了:
selectdistinct
只会从结果集中删除完全相同的元组,并且由于您请求
*
,这意味着所有表中的所有字段,因此您会得到元组,该元组在联接表中会有所不同


您可以通过减少返回的列来解决此问题:命名它们或仅使用
vendor.*

使用DISTINCT your\u column我也使用此选项,但…与我在问题中提到的相同结果选择DISTINCT(vendor.name、vendor.description、branchs.cityyes它就可以了。与其使用DISTINCT,不如使用GROUP BY.DISTINCT vendor。*它现在工作得很好…多亏了all和stackoverflow