SELECT列FROM tab1 WHERE test = test AND(SELECT col FROM tab2 WHERE qwe = qwe)?可能吗?

时间:2012-05-02 08:54:23

标签: sql postgresql subquery

如何进行这样的查询:

SELECT column1 FROM table1 WHERE ppp=$parameter 
AND (SELECT * FROM table2 WHERE parameter=$parameter AND qweqwe=$parameter2)

PS:'$'不是来自PHP,我只是表明这个值是可变的。

实际上,我在第二个查询中需要AND qweqwe<650

4 个答案:

答案 0 :(得分:3)

也许是这样的:

SELECT 
   column1 
FROM 
   table1 
WHERE 
   ppp=$parameter 
   AND EXISTS
       (
           SELECT
               NULL
           FROM
               table2
           WHERE
               table1.ppp=table2.parameter
               AND qweqwe<$parameter2
    ) 

答案 1 :(得分:2)

SELECT column1 FROM table1 WHERE parameter=$parameter 
AND  exists 
(SELECT 1 FROM table2 WHERE table2.parameter=table1.parameter AND table2.qweqwe=$parameter2)

答案 2 :(得分:1)

这取决于您的数据。 您可以使用exists,如前面的答案中所示,也可以使用join。

 SELECT column1  FROM table1 
 join table2 on table1.ppp=table2.parameter  and  table2.qweqwe=$parameter2
 where table1.ppp=$parameter  

在大多数情况下,加入将比存在快得多。但是如果table1中的每条记录中有多于一条recotd,那么你可能必须使用distinct;

答案 3 :(得分:0)

你究竟想做什么? 第一个AND之后的东西应该是合乎逻辑的,例如

... AND 650<(SELECT qweqwe FROM table2 WHERE parameter=$parameter2)