如何通过嵌套查询中的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;
答案 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
中使用子查询,就应该强烈考虑使用连接。它也可能更有效率。