2015-08-31 80 views
0

我有兩個表。不是每一行都與table2連接,但是如果他們有id,供應商是一樣的。我想從查詢LIKE或匹配的table1中選擇所有記錄,但只會在供應商也在table2中時選擇。有任何想法嗎?如果第二個匹配,mysql從兩個表中選擇信息

table1 
id   | 1 
supplier | 1 

額外信息表:

table2 
id  | 1 
supplier | 1 
extrainfo | "Best information" 

查詢

SELECT 
    table1.*,table2.* 
FROM 
    mytable_normalinfo as table1, 
    mytable_extrainfo as table2 
WHERE 
    MATCH(table1.fulltextcollum) 
    AGAINST ('+test*' IN BOOLEAN MODE) 
AND 
    table1.supplier = table2.supplier 
AND 
    table1.id = table2.id 
LIMIT 10; 

回答

4

我覺得你只是想要一個left join

SELECT table1.*, table2.* 
FROM mytable_normalinfo as table1 LEFT JOIN 
    mytable_extrainfo as table2 
    ON table1.supplier = table2.supplier AND 
     table1.id = table2.id 
WHERE MATCH(table1.fulltextcollum) AGAINST ('+test*' IN BOOLEAN MODE) 
LIMIT 10; 

有兩點需要注意:

  • 學習使用正確的JOIN語法。簡單的規則:從不FROM子句中使用逗號。
  • 當您使用LIMIT時,通常您也會使用ORDER BY
+0

謝謝你的注意事項!我會正確使用它們。 – user3485007

相關問題