首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个查询的Distinct值

两个查询的Distinct值
EN

Stack Overflow用户
提问于 2015-08-26 19:23:28
回答 2查看 85关注 0票数 0

我需要过滤重复项,但联合正在显示重复项。

代码语言:javascript
复制
For example Query-1 is displaying 5 tuples like 1,2,3,4,5.
Query-2 generating 3 tuples like 1,2,6.
Union of both the tuples displaying result 1,2,3,4,5,1,2,6.
But I want the result as 1,2,3,4,5,6.

这是我的控制器:

代码语言:javascript
复制
public function product()
{
    $product = $this->input->post('keyword');
    $temp = explode(" ", $product);
    $count = count($temp);
    for($i=0;$i<$count;$i++)
    {
        $query = "SELECT * FROM `product` WHERE SOUNDEX(`name`) LIKE CONCAT('%',SOUNDEX('$temp[$i]'),'%') UNION SELECT * FROM `product` WHERE `name` like '%$temp[$i]%'";
        $data = $this->Back_model->getby_query($query);
        $records = json_encode($data);
        echo $records;
    }
}  
EN

回答 2

Stack Overflow用户

发布于 2015-08-27 02:14:58

没有使用2个select查询的明显原因,可以将第二个过滤器添加到现有的where子句中

代码语言:javascript
复制
   SELECT * 
   FROM `product` 
   WHERE SOUNDEX(`name`) LIKE CONCAT('%',SOUNDEX('$temp[$i]'),'%')
   AND `name` like '%$temp[$i]%'";
票数 0
EN

Stack Overflow用户

发布于 2015-08-26 19:58:07

首先,我可能会用另一种脚本语言来做这件事,但是如果你真的想在MySQL中做这件事,你需要使用DISTINCT。您应该查询数据并将其放入临时表中,然后从临时表中查询DISTINCT值。完成后,您可以删除临时表。对于这么小的操作,我不确定我是否会这样做,但如果您说您有数千条记录/值需要过滤,那么它可能是值得的。

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

https://stackoverflow.com/questions/32225315

复制
相关文章

相似问题

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