如何正确使用带内连接的Order By

时间:2012-05-28 15:22:30

标签: mysql sql-order-by inner-join

我有一个类似于:

的SQL语句
SELECT * FROM table1 AS bl  
INNER JOIN table2 AS vbsa ON bl.id=vbsa.businesslisting_id AND vbsa.section_id ='70'  
INNER JOIN table3 AS vbla ON bl.id=vbla.businesslisting_id AND vbla.location_id='1'  
WHERE bl.published = '1' 
ORDER BY bl.listing_type DESC

由于某种原因,这不会返回任何行,但是如果我删除了ORDER BY子句,它确实会返回行。任何想法为什么会这样?

列listing_type确实存在于DB中并包含数字值。它被设置为varchar类型。我想也许这就是问题,但我尝试了一个不同的列(ID),它仍然没有用。

由于 罗伯特

2 个答案:

答案 0 :(得分:0)

试试这个

SELECT * FROM table1 AS bl  
INNER JOIN table2 AS vbsa ON bl.id = vbsa.businesslisting_id
INNER JOIN table3 AS vbla ON bl.id = vbla.businesslisting_id
WHERE bl.published = 1 AND vbsa.section_id = 70 AND vbla.location_id = 1
ORDER BY bl.listing_type DESC

还要确保在调试SQL时查看错误消息,尝试修复而不会发现这些错误很难

答案 1 :(得分:0)

发现问题。我一直在研究别人的代码,他们没有为有问题的表添加索引。

因此,当我添加sort by属性并运行查询时,它超出了MAX_JOIN_SIZE行。

我添加了索引,现在它完美无缺。

感谢每个人的投入。