2013-02-21 70 views
0

我想基于另一个查询来排序结果。这里是我的查询:如何使用带有ORDER BY子句的查询结果?

"SELECT * FROM red_table INNER JOIN blue_table ON red_table.ID = blue_table.ID"; 

我想使用来自另一个查询结果添加ORDER BY

"SELECT date FROM blue_table WHERE status = 'ready'"; 

所以最终会是这样的:

"SELECT * FROM red_table INNER JOIN blue_table ON red_table.ID = blue_table.ID ORDERY BY (SELECT date FROM blue_table WHERE status = 'ready')"; 

我如何去做?或者可能吗?

UPDATE: 我知道我可以只使用ORDER BY blue_table.datedate列包含日期值。 blue_table是一种元数据表。所以我需要将date列中的值与status列进行匹配,因此我只获取日期值并将其用于排序。也许我不应该把它称为栏date,但我希望你明白我的观点。

+1

如果status = ready,您想按日期排序?如果它不准备好呢? – 2013-02-21 00:13:29

+0

WHERE并不意味着任何顺序。你能更好地解释你实际上想要做什么吗? – 2013-02-21 00:16:16

+0

@ExplosionPills是的。那么有状态!= ready的记录应该不包括在内。 – adredx 2013-02-21 00:17:17

回答

1

也许你的意思是这样的?您必须在选择中添加其他列名称

SELECT status, date 
    FROM red_table INNER JOIN blue_table ON red_table.ID = blue_table.ID 
    GROUP BY 1, 2 
+0

我更新了我的问题,请你再读一遍。谢谢! – adredx 2013-02-21 00:33:46

+0

您可以使用http://sqlfiddle.com/创建您的架构并添加一些示例数据吗? – Andrew 2013-02-21 00:39:15

0
SELECT * 
FROM red_table 
INNER JOIN blue_table ON red_table.ID = blue_table.ID 
WHERE blue_table.status = 'ready' 
ORDER BY blue_table.date 

注意,如果blue_table不包含连接条件的匹配,从red_table什么都不会显示。

相关问题