我有一個包含名為 user_id 的列和另一個名為 flag_count 的列的 tableA 我需要使用 flag_count=12 過濾 tableA 中的所有行,然后使用這些行中的 user_id 來查詢 tableB 并使用相同的 user_id 回傳所有行和所述行還包含注冊=真的列值
這是我到目前為止所擁有的:
select * from public.tableA where user_id in (
select user_id from public.tableB
where flag_count = 12
group by user_id having count(*) = 1
)
and registered='true'
這看起來很簡單,但我找不到簡單的解決方案。對此的任何幫助將不勝感激。
uj5u.com熱心網友回復:
您可以通過使用操作并在“ public.tableA.user_idJOIN ”上添加索引來更有效地作業。
WITH cte AS (
SELECT user_id
FROM public.tableB
WHERE flag_count = 12
GROUP BY user_id
HAVING count(*) = 1
)
SELECT *
FROM public.tableA a
INNER JOIN cte
ON a.user_id = cte.user_id AND a.registered = 'true'
子查詢可能會進一步簡化,盡管它取決于您擁有的資料型別。擁有樣本資料可以對此有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/516613.html
標籤:PostgreSQL
