如何在嵌套查询中按表排序

时间:2014-10-11 05:25:51

标签: mysql sql nested-queries

如何通过嵌套查询中的SO表来订购结果?

如果我将ORDER BY更改为i.created_date(这是另一个有效列),则查询可以正常工作。我该如何做到这一点?

 SELECT *
 FROM   invoice AS i
 WHERE  i.so_sid = ( SELECT s.so_sid
    FROM so AS s
    WHERE i.so_sid = s.so_sid AND s.created_date >= '2014-10-01'
    ORDER BY s.created_date)
 ORDER BY s.created_date;

1 个答案:

答案 0 :(得分:1)

您需要加入而不是使用子查询:

SELECT i.*
FROM invoice AS i
JOIN so AS s ON i.so_sid = s.so_sid
WHERE s.created_date >= '2014-10-01'
ORDER by s.created_date

通常,只要您发现自己在WHERE中使用子查询,就应该强烈考虑使用连接。它也可能更有效率。