Postgresql使用string_agg导致IN语句

时间:2016-06-22 04:35:09

标签: postgresql

任何人都知道string_agg结果需要"按摩"所以它们可以在IN语句中使用? 以下是一些示例代码。谢谢你的时间。 P.S:在挠头之前问他到底是怎么回事。我只使用此代码来显示string_agg b / c的问题,因为您可以看到查询,否则有点无意义。

亨利

WITH TEMP AS 
(
SELECT 'John' AS col1
UNION ALL
SELECT 'Peter' AS col1
UNION ALL
SELECT 'Henry' AS col1
UNION ALL
SELECT 'Mo' AS col1
)
-- results that are being used in the IN statement
--SELECT    string_agg('''' || col1::TEXT || '''',',') AS col1 FROM TEMP  


SELECT col1 FROM TEMP
WHERE col1 IN
(
SELECT  string_agg('''' || col1::TEXT || '''',',') AS col1
FROM TEMP  
)

1 个答案:

答案 0 :(得分:0)

您不能将动态代码与静态代码混合使用。你的例子不清楚你想要做什么。您的样本可以写成:

echo $a"'"$b"'"

或使用数组:

c

或简单(在这种情况下,因为main和subselect是没有任何过滤器的同一个表):

WITH TEMP(col1) AS (values ('John'), ('Peter'), ('Henry'), ('Mo'))
SELECT col1 FROM TEMP
WHERE col1 IN (SELECT col1 FROM TEMP)