mysql - 根据表中id的日期选择数据

标签 mysql select

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

相关文章:

mysql - EXPLAIN SELECT 返回非不同列值的行数

MySQL 将行转为动态数量的列

sql - 如果我同时拥有(A,B)和(B,A)则仅选择一对

java - 在 SocketChannel 上使用 Selector

php - mysql数据导出到excel时出现错误信息

java - 无法连接到数据库,帮我理解这个错误列表吗?

mysql - Laravel 查询生成器高级 wheres AND, OR

c# - 使用 Where 子句在 DataTable 的列中查找最小/最大值?

mysql - 选择与一项关联的多项

PHP - 将 PDO 与 IN 子句数组一起使用