2014-12-05 244 views
0

好吧,我用“LIKE”和“LEFT JOIN”,它工作正常。使用LIKE %%与LEFT JOIN

$sql = $conn->query("SELECT * FROM tasks t 
        LEFT JOIN users u 
        ON t.allowed_countries LIKE u.country 
        WHERE u.username = '$username'"); 

但是当我尝试使用“LIKE %%”,而不使用“LIKE”,那么它给了我错误

LIKE '%" u.country "%' 

谁能告诉我这个问题好吗?

谢谢。

+0

请注意,在SQL中使用这样的通配符可能会导致严重的性能问题。你不会注意到它在一个小的数据集上,但随着数据的增长,它会减慢,因为它将不得不扫描整个表以找到匹配的记录。你最好有一个子表,以便每个任务的每个允许国家都在一个单独的记录中,并且使用记录ID而不是完整的国家名字符串将它们链接起来。谷歌的“多对多关系”来了解更多关于如何做到这一点的信息。 – Spudley 2014-12-05 21:32:32

回答

3

USE concat as%是一个字符。

LIKE concat('%',u.country,'%')