2014-12-05 251 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,'%')