Mysql连接只显示唯一的ID

时间:2011-10-12 22:16:55

标签: mysql inner-join

我正在尝试使用sql查询,但我得到多次相同的结果。

我读到我必须使用INNER JOIN或LEFT JOIN来避免这种情况。唯一的问题是我对mysql有点新手,所以我实际上无法成功查询。

查询是

SELECT * 
FROM table1,table2 
WHERE table1.name LIKE '%$str%' 
OR 
table1.last_name LIKE '%$str%'

$str是一个字符串,我在php函数中传递以进行搜索。

2 个答案:

答案 0 :(得分:0)

您需要在这两个表之间建立联接。

SELECT * 
FROM table1
INNER JOIN table2
   ON table1.key = table2.key
WHERE table1.name LIKE '%$str%' 
OR 
table1.last_name LIKE '$str%'

您还应该使用mysql_real_escape_string来防止SQL注入。

$query = "SELECT * 
FROM table1
INNER JOIN table2
   ON table1.key = table2.key
WHERE table1.name LIKE '%" . mysql_real_escape_string($str) ."%' 
OR 
table1.last_name LIKE  '%" . mysql_real_escape_string($str) ."%'";

以下是escape string的文档。

答案 1 :(得分:0)

你可以尝试:

SELECT DISTINCT t1,*, t2.* 
FROM table1 t1 INNER JOIN table2 t2
ON t1.id = t2.table1_id 
WHERE 
    table1.name LIKE '%$str%' OR 
    table1.last_name LIKE '%$str%'