任何人都可以看到这个SQL查询有什么问题。
这不返回任何结果,虽然同样的查询输出以便计算vars然后在mysql中运行返回3800+结果
$query = "SELECT * FROM twitter_user JOIN twitter_connection
ON (twitter_user.tu_id = twitter_connection.tc_tu_id)
WHERE tc_followyou = 1 AND tc_twitterapp_user_id = ". $mytwitterid . "
LIMIT " . $perpage . " OFFSET " . $twitter_offset;
然而,同样的查询可以正常工作
$query = "SELECT * FROM twitter_user JOIN twitter_connection
ON (twitter_user.tu_id = twitter_connection.tc_tu_id)
WHERE tc_youfollow = 1 AND tc_twitterapp_user_id = ". $mytwitterid . "
LIMIT " . $perpage . " OFFSET " . $twitter_offset;
唯一的区别是使用tc_followyou vs tc_youfollow
两者都在同一个表中,没有NULL记录和整数。
如果我使用完全相同的php代码和交换tc_followyou获取tc_youfollow,我会得到一个结果。
我不知道为什么,但如果脚本在亚马逊RDS服务器上运行Mysql v5.5.8-log,另一台运行mysql 5.1.52的服务器
,这只是一个问题按预期工作。
为什么服务器版本或字段名称会导致此问题?
我很难过。
感谢Stephen
更新:已解决此问题。问题是我运行的实际代码没有限制。我不小心对数据库运行以获得“总计”。这是因为失败的表有如此多的记录,它没有返回结果。我接受了解决方案,因为这个人帮助我完成了一个有助于发现问题的思考过程。
答案 0 :(得分:1)
LIMIT
提供确定性排序顺序,则 ORDER BY
不可靠。按照设计,结果行的顺序是任意的,除非您指示SQL对它们进行排序。当您使用LIMIT子句时,这可能会特别影响返回的行。