将Mysql查询的结果传递给同一个表上的子查询

时间:2014-06-09 16:43:33

标签: mysql subquery

CREATE TABLE test (
id INT(12),
time VARCHAR(16),
group INT(2),
taken TINYINT(1),
RID int(11) NOT NULL auto_increment,
primary KEY (RID));


id | time | group | taken
---------------------------
1  | 13.00|   1   |   1
---------------------------
2  | 13.00|   2   |   0
---------------------------
3  | 14.00|   2   |   0
---------------------------
4  | 15.00|   2   |   0
---------------------------
5  | 12.00|   3   |   0

如上所述,我有一个表结构和样本数据,我想得到最小的"组"未被采取的数字" (采取= 0)

我有两个问题:

SELECT * From `test` 
WHERE taken=0

SELECT * FROM `test`
WHERE `group` =  ( SELECT MIN(`group`) FROM `test` )

有人可以告诉我如何组合这两个查询,以便我可以将第一个查询的结果传递给第二个查询,如下所示。

id | time | group | taken
---------------------------
2  | 13.00|   2   |   0
---------------------------
3  | 14.00|   2   |   0
---------------------------
4  | 15.00|   2   |   0
---------------------------

3 个答案:

答案 0 :(得分:1)

使用子查询获取0的最低组。将主表连接到子查询的结果。

这样的事情: -

SELECT a.* 
From `test` a
INNER JOIN
(
    SELECT MIN(`group`) AS min_group
    FROM `test` 
    WHERE taken=0
) b
ON a.taken = b.taken
AND a.`group` = b.min_group

答案 1 :(得分:1)

您可以在第二个查询中使用第一个查询的结果,如下所示:

SELECT * 
FROM TEST 
WHERE `group` = (SELECT MIN(`group`) 
                 FROM `test` 
                 WHERE taken = 0)

根据this SQLFiddle

,您可以获得所需的结果

答案 2 :(得分:0)

试试这个:

SELECT min(`group`) FROM (
    SELECT * FROM test
    WHERE taken = 0) 
AS t;