我從來沒有檢查過這樣的事情,所以我希望你們都可以幫忙。我不確定是否最好創建一個臨時表,然後檢查一個項是否在其中或者是否有更好的方法。這個SQL查詢應該如何構建? (Postgres)
表中的每一行代表一個可能有父項的對象。父級存儲在同一個表中。在這個例子中,parent_id字段保存了行父節點的主鍵。我試圖選擇表中所有具有設置爲特定值的類型列和其父行在field_b列中具有'z'的行。括號中的部分顯然需要工作...
SELECT s_id, s_text, s_parent_id
FROM sections
WHERE s_derivedtype >= 10000 AND
如果返回任何
SELECT s_id
FROM sections
WHERE s_id = {the s_parent_id from the first query) AND s_flags LIKE '%z%'
我這個更新,希望更易於閱讀...
什麼是最有效的如何做到這一點?我預計在桌子18米之外會有100k排的東西回來,所以體面的表現並不重要。
提供架構和小集合數據。例如:「在PARENT_ID領域擁有行的父級的主鍵」聽起來有點混亂。這是某種形式的EAV,還是隻是被解釋得笨拙? – 2013-02-16 23:08:29
(我相信你只是想自我加入,就像'FROM table1 AS c JOIN table1 AS p ON c.parent_id = p.id',但我今天沒有猜測心情。) – 2013-02-16 23:10:10
這可能是在正確的軌道上。我沒有發佈完整的模式,但希望能夠讓我的問題更清楚一些。 – thatthatisis 2013-02-16 23:18:01