1

我目前正在显示我的数据库中的最后 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

请参阅下面的小提琴。

http://sqlfiddle.com/#!2/21ad85/14

我想在我的数据库中显示最后 5 个事件,其中 eventdate < (events.eventdate WHERE events.id =10)

所以在 it = 10 的地方你应该能够看到事件 id 9,8,7,6,5 在它 = 9 的地方你应该能够看到 8,7,6,5,4 等。

但我不太确定如何用 sql 编写它。我认为应该是这样的

WHERE eventdate < (events.eventdate WHERE events.id =10)

但这不起作用

4

2 回答 2

5

也许你需要这个?

WHERE eventdate < (SELECT eventdate FROM events WHERE events.id =10)
于 2013-01-15T07:49:49.413 回答
0

你能试试这个吗?

wHERE eventdate < curdate() and events.id < 10

updated for the typo: `events.eventdate to curdate()`
于 2013-01-15T07:50:20.693 回答