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
---------------------------
答案 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)
,您可以获得所需的结果
答案 2 :(得分:0)
试试这个:
SELECT min(`group`) FROM (
SELECT * FROM test
WHERE taken = 0)
AS t;