2015-08-26 38 views
0

我需要筛选重复项,但联合显示重复项。两个查询的不同值

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. 

这里是我的控制器:

所有的
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; 
    } 
} 
+2

请修改您的问题,并提供采样数据和期望的结果。目前尚不清楚你想要做什么。 –

+0

使用'UNION'会删除重复项。您必须编辑问题,以便我们可以了解重复的内容。 –

+0

是的。现在编辑你的问题。 #Manjhi –

回答

-2

首先,我可能会做这在其他脚本语言,但如果你真的想这样做在MySQL中,你需要使用DISTINCT。您应该查询数据并将其放入临时表中,并从临时表中查询DISTINCT值。完成后,您可以删除临时表。对于这样一个小的操作,不知道这是我会做什么,但如果你说你有成千上万的记录/值需要过滤,比它可能是值得的。

+0

'UNION'产生一个不同的结果,这个建议没有意义 –

+0

如果你读了提问者写的东西,他说它没有产生一个独特的结果,这是它产生了什么:** 1,2,3,4,5,1,2,6 **在没有完整阅读问题的情况下标记我的答案,并且我的回应不是适当的行动。 –

+2

SELECT ... UNION [ALL | ** DISTINCT **] SELECT虽然distinct是可选的,但在使用union时的选择是'union all'或'union distinct',如果你只是使用'union',那么仍然是假设的。请参阅https://dev.mysql.com/doc/refman/5.0/en/union.html,尽管提供了一种替代方法,但没有理由认为它可以解决(至今没有记录的)问题 –

0

没有明显的原因,使用2个选择查询,第二过滤器可被添加到现有的where子句

SELECT * 
    FROM `product` 
    WHERE SOUNDEX(`name`) LIKE CONCAT('%',SOUNDEX('$temp[$i]'),'%') 
    AND `name` like '%$temp[$i]%'";