我试图写一个SQL查询,但我一直收到错误,我不知道可能出现什么问题。我阅读了手册并搜索了很多内容,但我无法正常使用。
查询:
SELECT appid
FROM steam_app
ORDER BY last_update, appid
WHERE last_update < '2014-10-16 01:01:01'
这不断给出错误SQL Error 1064,SQL语法。 现在我知道错误在WHERE行上。因为如果我删除它,一切都很好。
解决方案:问题是WHERE和ORDER BY的顺序。应该在ORDER BY之上。
我最终想要的是一个类似的查询:
SELECT appid
FROM steam_app
ORDER BY last_update, appid
WHERE last_update < NOW() + INTERVAL 7 DAY
我的数据库:
CREATE TABLE `steam_app` (
`appid` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(128) NULL DEFAULT NULL,
`type` VARCHAR(64) NULL DEFAULT NULL,
`header_image` VARCHAR(256) NULL DEFAULT NULL,
`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`last_change` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`appid`),
INDEX `type` (`type`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
示例数据
INSERT INTO `steam_app` (`appid`, `name`, `type`, `header_image`, `last_update`, `last_change`) VALUES (327400, 'Sid Meier\'s Colonization (Classic)', 'game', 'http://cdn.akamai.steamstatic.com/steam/apps/327400/header.jpg?t=1412883714', '2014-10-16 13:36:37', '2014-10-16 13:36:37');
INSERT INTO `steam_app` (`appid`, `name`, `type`, `header_image`, `last_update`, `last_change`) VALUES (327650, 'May’s Mysteries: The Secret of Dragonville', 'game', 'http://cdn.akamai.steamstatic.com/steam/apps/327650/header.jpg?t=1413366276', '2014-10-16 13:36:37', '2014-10-16 13:36:37');
INSERT INTO `steam_app` (`appid`, `name`, `type`, `header_image`, `last_update`, `last_change`) VALUES (327860, 'Salt', 'game', 'http://cdn.akamai.steamstatic.com/steam/apps/327860/header.jpg?t=1413399075', '2014-10-16 13:31:53', '2014-10-16 13:31:53');
答案 0 :(得分:1)
您需要使用date_add
功能。此外,order by
子句位于where
子句之后:
SELECT last_update, appid
FROM steam_app
WHERE last_update < DATE_ADD(NOW(), INTERVAL 7 DAY)
ORDER BY last_update, appid