我目前正在显示我的数据库中的最后 5 个事件,其中 WHERE eventdate < CURDATE() 例如
CREATE TABLE venues (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
venue VARCHAR(255)
) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB;
CREATE TABLE categories (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
category VARCHAR(255)
) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB;
CREATE TABLE events (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
eventdate DATE NOT NULL,
title VARCHAR(255),
venueid INT,
categoryid INT
) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB;
INSERT INTO venues (id, venue) VALUES
(1, 'USA'),
(2, 'UK'),
(3, 'Japan');
INSERT INTO categories (id, category) VALUES
(1, 'Jazz'),
(2, 'Rock'),
(3, 'Pop');
INSERT INTO events (id, eventdate, title, venueid, categoryid) VALUES
(1,20121003,'Title number 1',1,3),
(2,20121010,'Title number 2',2,1),
(3,20121015,'Title number 3',3,2),
(4,20121020,'Title number 4',1,3),
(5,20121022,'Title number 5',2,1),
(6,20121025,'Title number 6',3,2),
(7,20121030,'Title number 7',1,3),
(8,20121130,'Title number 8',1,1),
(9,20121230,'Title number 9',1,2),
(10,20130130,'Title number 10',1,3);
SELECT DATE_FORMAT(events.eventdate,'%M %d %Y') AS DATE, title,
cats.category AS CATEGORY, loc.venue AS LOCATION
FROM events
INNER JOIN categories as cats ON events.categoryid=cats.id
INNER JOIN venues as loc ON events.venueid=loc.id
WHERE eventdate < CURDATE()
ORDER BY eventdate DESC
LIMIT 0 , 5
请参阅下面的 fiddle 。
http://sqlfiddle.com/#!2/21ad85/14
我想显示我数据库中的最后 5 个事件,其中 eventdate < (events.eventdate WHERE events.id =10)
所以在 it = 10 的地方你应该能够看到事件 ID 9,8,7,6,5 在 it = 9 的地方你应该可以看到 8,7,6,5,4 等
但是我不太确定如何用sql来写。我认为应该遵循
WHERE eventdate < (events.eventdate WHERE events.id =10)
但这行不通
最佳答案
也许你需要这个?
WHERE eventdate < (SELECT eventdate FROM events WHERE events.id =10)
关于mysql - 根据表中id的日期选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333191/