首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql的select查询不工作。

mysql的select查询不工作。
EN

Stack Overflow用户
提问于 2012-12-20 12:09:28
回答 2查看 6.7K关注 0票数 0

在选择查询mysql数据库时,我使用了,如下所示

代码语言:javascript
复制
$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();
}
    ?>

问题是,它多次显示每个结果,从分支表中显示每个结果尽可能多地显示每个结果(意思是:如果供应商表中的结果有5个城市在分支表中,它将显示5次)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-20 12:12:09

起作用了。返回的是两个表中的所有列值。因此,如果一个供应商有5个城市,那么就有5个不同的结果:

代码语言:javascript
复制
Vendor   City
A        London
A        New York
B        London
C        London

这些行都不是相同的,因此,它们是查询的不同结果。

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

代码语言:javascript
复制
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."%')");
票数 6
EN

Stack Overflow用户

发布于 2012-12-20 12:14:06

DISTINCT可以工作--但是您的期望是错误的:SELECT DISTINCT将只从结果集中删除完全相同的元组,并且由于您请求* (这意味着来自所有表的所有字段),您将得到元组,即连接表中的差异。

您可以通过减少返回的列来解决这个问题:要么命名它们,要么只使用vendor.*

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13971916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档