2015-01-06 88 views
0
SELECT  ba.bug_id, 
       ba.bug_when, 
       b.short_desc 
    FROM  bugs_activity ba 
    INNER JOIN bugs b 
    order BY bug_id DESC 
    LIMIT  10 

上述查詢應該從2個表中返回數據(bugs_activity &錯誤)。但它只是進入一個無限循環。什麼可能是錯的?爲什麼以下查詢需要永久顯示結果?

使用EXPLAIN查詢返回了以下結果之前 -

enter image description here

+4

你沒有'JOIN'的ON條款,所以你得到了一個笛卡爾產品。這可能是一個非常大的行集。 –

+0

但是,MySQL不會在select語句中循環。因此,如果您認爲存在無限循環,那是在您的應用程序代碼中,而不是此查詢(儘管連接不正確) –

回答

2

也許這是因爲沒有在查詢中沒有信息哪些領域使這個關係,所以結果集是太大,執行超時。

您需要告知您的連接子句BUGS中的哪個字段與BUGS_ACTIVITY有關。

例如,如果您的表Customer_Contact中有兩個表Customer和Customer_Contact,則表中有一個字段是Customer表的外鍵。您需要在您的查詢提供以下信息:

SELECT cus.* 
    FROM customer cus 
INNER JOIN customer_contact con ON con.customer_id = cus.id 

這只是一個例子,如果你提供的字段中存在兩個表它可以幫助什麼。我可以想像這樣的事情:

SELECT  ba.bug_id, 
      ba.bug_when, 
      b.short_desc 
FROM  bugs_activity ba 
INNER JOIN bugs b ON ba.bug_id = b.id 
order BY bug_id DESC 
LIMIT  10 
+1

這工作,謝謝布魯諾! – SoftwareTestingEnthusiast