我有一個MySQL表。我們稱之爲小工具。小工具表有3個字段:ID,type_id和名稱。我希望在一個查詢中獲取所有使用名爲'doodad'的Widget共享type_id的小部件。我寫了2個查詢:MYSQL WHERE-IN子查詢永遠運行
- 給我名爲'doodad'的小部件的type_id。
- 給我所有使用該type_id的小部件。
This works。每個查詢獨立實現其目標。
但是,當我將它們組合成一個嵌套的查詢時,它會永遠運行,無限循環樣式。它看起來像這樣:
SELECT * FROM widgets WHERE type_id IN (
SELECT type_id FROM widgets WHERE name = 'doodad'
);
任何人都可以解釋這一點嗎?是否因爲我正在編寫一個在同一個表上運行兩次的嵌套查詢?
小輪子,你爲什麼旋轉?
我使用WHERE-IN子查詢的原因是因爲我以前使用JOIN ,並且針對200萬個小部件的數據庫,運行需要兩分鐘。作爲2個單獨的查詢,運行時間不到一秒鐘。 – Whit 2010-08-29 23:39:09
@Whit - 我發現了一些解決方法,您可以嘗試查看是否可以開始工作。 – 2010-08-30 00:49:03
我不能相信,在發明了這個constify 6年後,這仍然不是mysql的一部分。是不是隻是手動創建臨時表並加入它的別名? – fastmultiplication 2012-03-26 09:11:46