2014-02-10 17 views
0

我正在使用MySql,並且除了內部查詢中的數據不在數據庫中而是在PHP會話中之外,其情況與相關子查詢相似。數據不在表中的相關子查詢

如果所有的數據都在數據庫中,查詢會是這個樣子:

SELECT * FROM tableA WHERE (tableA.valueA && (
SELECT valueB FROM tableB WHERE tableB.id = tableA.id)); 

我的問題是,我沒有tableB的。相反,我有一個PHP數組。我怎樣才能將數組注入查詢?我應該嘗試在某處創建臨時表嗎?或者我應該試圖將數組聲明爲變量?

PHP數組中的信息特定於每個用戶並且變化很快。此外,還會有很多查詢,因此性能是一個考慮因素。

+1

MySQL沒有數組的概念,即使'FIND_IN_SET'可以使用位置標記,而不是像'tableB.id'這樣的'named'條目。臨時表似乎確實是一個很好的解決方法。雖然,如果你的實際數組不是那麼大,你可能想要獲取所有'WHERE table.id = tableA.id',並且在PHP本身中執行'valueA && valueB'過濾。如果你想要一個臨時表,只需將其設置爲「JOIN」而不是子查詢。 – Wrikken

+0

謝謝Wrikken。你爲什麼不把它作爲答案發布?我很高興接受它。 –

回答

0

查看上面Wrikken的評論 - 我將這個臨時表格看作是一個很好的解決方案。