1

如何进行这样的查询:

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

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

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

4

4 回答 4

3

也许是这样的:

SELECT 
   column1 
FROM 
   table1 
WHERE 
   ppp=$parameter 
   AND EXISTS
       (
           SELECT
               NULL
           FROM
               table2
           WHERE
               table1.ppp=table2.parameter
               AND qweqwe<$parameter2
    ) 
于 2012-05-02T08:57:57.843 回答
2
SELECT column1 FROM table1 WHERE parameter=$parameter 
AND  exists 
(SELECT 1 FROM table2 WHERE table2.parameter=table1.parameter AND table2.qweqwe=$parameter2)
于 2012-05-02T08:57:20.390 回答
1

这取决于你的数据。您可以使用如先前答案中所示的存在或使用连接。

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

在大多数情况下,join 会比存在时快得多。但事实证明,如果 table2 中的每条记录有多个 recotd,则必须使用 distinct

于 2012-05-02T09:06:41.893 回答
0

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

... AND 650<(SELECT qweqwe FROM table2 WHERE parameter=$parameter2)
于 2012-05-02T08:55:47.240 回答