使用SQL从数据库进行数据过滤

时间:2019-04-06 06:16:45

标签: mysql sql database

我想根据发布日期从SQL中过滤数据库中的一组特定数据,是的,我正在开发一个电影站点。我想获取那些将来将以ASC顺序排在顶部的数据,然后是过去的数据,我的意思是以DESC顺序发布的数据,并在StackOverflow社区的帮助下得到。但是感觉就像我有另一个问题,我想要的是,超过其发布日期的数据,它将在前15天保持最高状态,然后遵循我最初说的规则。

我的表结构:

from PIL import Image
# Save your plot as png file (option "Download as png" in upper-left corner)
PNG_FILE = 'horizontal-bar.png'
PDF_FILE = 'horizontal-bar.pdf'

rgba = Image.open(PNG_FILE)
rgb = Image.new('RGB', rgba.size, (255, 255, 255))  # white background
rgb.paste(rgba, mask=rgba.split()[3])               # paste using alpha channel as mask
rgb.save(PDF_FILE, 'PDF', resolution=100.0)

我一直在用它来将ASC顺序的即将到来的数据保持在顶部,然后在rel_date之前以DESC顺序发布了数据

CREATE TABLE `movies` (
  `id` int(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  `imdbID` varchar(255) NOT NULL,
  `poster` varchar(255) NOT NULL,
  `year` varchar(255) NOT NULL,
  `rel_date` date NOT NULL,
  `main_menu_id` int(255) NOT NULL
)

--
ALTER TABLE `movies`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `movies`
  MODIFY `id` int(255) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=131;
COMMIT;

现在,我希望发布的数据在前15天保持在顶部,然后按照我最近的代码进行操作。 我知道这是一个可怕的描述,因为这是我的第一篇文章。抱歉。

1 个答案:

答案 0 :(得分:0)

我在Postgresql中创建了此代码,但是您需要将now()转换为mysql。

create table test ( id serial, release date );

insert into test (release) values ( to_date('01/04/2019', 'dd-mm-yyyy') );
insert into test (release) values ( to_date('02/04/2019', 'dd-mm-yyyy') );
insert into test (release) values ( to_date('03/04/2019', 'dd-mm-yyyy') );

insert into test (release) values ( to_date('15/04/2019', 'dd-mm-yyyy') );
insert into test (release) values ( to_date('16/04/2019', 'dd-mm-yyyy') );
insert into test (release) values ( to_date('17/04/2019', 'dd-mm-yyyy') );


select
    release
from (
(
select
    0 priority,
    release
from test
where
    release >= (now() - INTERVAL '15 DAY')::date
)
union
(
select
    1 priority,
    release
from test
where
    release < (now() - INTERVAL '15 DAY')::date
)) foo
order by
    priority;