0

我有一个看起来像这样的 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 确实存在于数据库中并包含数值。它设置为 varchar 类型。我想也许这就是问题所在,但我尝试了不同的列(ID),但它仍然不起作用。

谢谢罗伯特

4

2 回答 2

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 时查看错误消息,试图在没有看到这些错误的情况下修复是很困难的

于 2012-05-28T15:31:04.040 回答
0

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

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

我添加了索引,现在它可以完美运行了。

感谢大家的意见。

于 2012-05-28T21:28:09.603 回答