2017-08-31 65 views
1

值此查詢不工作,但我希望這將足以讓你明白我需要什麼:主要SELECT會從子查詢

SELECT p.ID, lat.l 
FROM hlp_posts AS p 
WHERE p.ID 
IN (SELECT pm.post_id, pm.meta_value AS l FROM hlp_postmeta AS pm WHERE pm.meta_key = "hlp_latitude") lat 

我需要在主越來越選擇一個值是什麼(lat.l)在子查詢中選擇。
我可以通過JOIN獲得它,但我無法使用它。

+0

如果你使用'IN'你一定會在子查詢,這是用於評估病情的一個返回單列,這種方式是將不可能獲取'meta_value'。你爲什麼不能使用'JOIN'的具體原因? – Batsu

+0

我知道這似乎很奇怪,但JOINS在這種情況下行爲非常緩慢。在完整的代碼中,我有15個連接。由於從一些測試中,子查詢表現得更好,我試圖用他們重構我的代碼。 – Ferex

回答

2

您可以使用JOIN代替,例如:

SELECT p.id, pm.meta_value 
FROM hlp_posts AS p JOIN hlp_postmeta pm ON p.ID = pm.post_id 
WHERE pm.meta_key = "hlp_latitude"; 
+0

是否有任何性能原因使用連接,因爲在舊的,應該避免我的問題是具體的,如果加入將更快我的查詢 – Noob

+0

@Noob你可以參考[這](https://stackoverflow.com/questions/2577174/連接與子查詢)所以答案。我會說這取決於索引而不是連接與子查詢。 –

+0

謝謝這將幫助我,因爲我想特別證明我的數據庫技能索引。 – Noob