2011-06-07 99 views
0

我有三個表格:keywords,querieskeywords_querieskeywords_queries有兩列;一個鏈接到關鍵字id,另一個鏈接到查詢id。如果我有查詢的id和我想鏈接的關鍵字列表,查找我擁有的關鍵字的id的最有效方法是什麼,並將它們插入到keywords_queries表中?很明顯,我可以做一個大的SELECT查詢並使用結果來構建INSERT查詢,但是有一種方法可以在一個查詢中完成它?我正在查找的關鍵字也保證在關鍵字表中。MySQL:查找多對多關係的id列表

+0

你試圖創建的關係?你有一套'queryID'和一套'keywordID',你想插入*所有組合*嗎?或者你有一個'queryID',你想連接到多個'keywordID's? – Matthew 2011-06-07 00:41:03

+0

只有一個查詢ID。 – blcArmadillo 2011-06-07 01:01:32

回答

1
INSERT INTO keywords_queries 
    SELECT query.id, keyword.id 
     FROM keywords, queries 
    WHERE keywords.id in (???) 
     AND queries.id = ? 
+0

+1只有當他想要插入所有關鍵字/查詢的所有組合時,交叉連接方法纔是可行的。 – Matthew 2011-06-07 00:48:46

+0

是的,但我更願意以這種方式編寫以防萬一有多個查詢。 – manji 2011-06-07 00:53:23

1

未測試:

INSERT INTO keywords_queries (keywordid, queryid) VALUES (
    SELECT myQueryid, keywords.primaryid 
    FROM keywords 
    WHERE keywords.description IN ('a key','another key','and so on') 
) 
+0

+1這種方法是唯一可行的,如果他有一個*單* queryID – Matthew 2011-06-07 00:49:25

+0

正確的......這是從問題推斷出來的。 ''如果我有查詢的ID和...' – ic3b3rg 2011-06-07 00:52:02