我需要过滤重复项,但联合正在显示重复项。
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;
}
} 发布于 2015-08-27 02:14:58
没有使用2个select查询的明显原因,可以将第二个过滤器添加到现有的where子句中
SELECT *
FROM `product`
WHERE SOUNDEX(`name`) LIKE CONCAT('%',SOUNDEX('$temp[$i]'),'%')
AND `name` like '%$temp[$i]%'";发布于 2015-08-26 19:58:07
首先,我可能会用另一种脚本语言来做这件事,但是如果你真的想在MySQL中做这件事,你需要使用DISTINCT。您应该查询数据并将其放入临时表中,然后从临时表中查询DISTINCT值。完成后,您可以删除临时表。对于这么小的操作,我不确定我是否会这样做,但如果您说您有数千条记录/值需要过滤,那么它可能是值得的。
https://stackoverflow.com/questions/32225315
复制相似问题