2017-05-29 27 views
0

我使用PostgreSQL WITHhttps://www.postgresql.org/docs/current/static/queries-with.html。我可以运行相当复杂的查询,但是我可以使用已排序的数据吗?例如:PostgreSQL WITH查询已经选定的表

SELECT id, f_name, l_name, email FROM users 
WHERE f_name = 'BabyBoy' 

WITH i_need_do_thomething AS (
# and than use that filtered data 
) 
SELECT * FROM i_need_do_thomething 

感谢

UPDATE

,我在Ruby中使用此查询on Rails的所有问题。我用联想,如:

@laptop = Laptop.find(1) 
@laptop.user.do_custom_sql(HERE_WILL_BE_RAW_SQL) 

其中@laptop.user等于

SELECT id, f_name, l_name, email FROM users 
WHERE f_name = 'BabyBoy' 

回答

2

WITH QUERIES每个查询都被视为一个临时表。您可以根据需要放置尽可能多的查询:

WITH filtered_something AS (
    SELECT id, f_name, l_name, email FROM users WHERE f_name = 'BabyBoy' 
), i_need_do_something AS (
    SELECT * FROM filtered_something 
) 
SELECT * FROM i_need_do_something; 
+0

因此,我只能在单独的情况下使用'WITH'?我不能像我在示例中所写的那样使用它。对? –

+0

是的,你不能这样做。在这种情况下,我认为你应该使用'ActiveRecord :: Base.connection.execute(whole_sql_here)',然后遍历结果集。 –