【发布时间】:2019-03-21 09:56:48
【问题描述】:
我正在寻找一种方法来插入尚不存在的行。我已阅读有关唯一键的信息,我还添加了一个 id(唯一自动公司)列。而且我尝试了很多不同的方法 - 但我无法让它发挥作用。
到目前为止我尝试了什么:
INSERT INTO programmes (station_id, programme_start, programme_end, title, subtitle, long_description, short_description, rating, imdb, episode, season, year, categories, icon, actors, writers, directors)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
station_id = VALUES(station_id),
programme_start = VALUES(programme_start)
我也试过了:
ON DUPLICATE KEY UPDATE
但我不断收到#1064 错误提示''有问题
我不知道我做错了什么。我每天都在使用数据库更新电视指南信息——我从不同的 api 获取这些数据。现在这些 api 响应有时包含 dubble(如果一个程序跨越 2 天)。
我也尝试使用if and else,但我尝试的一切都失败了,错误为#1064
当我尝试这个查询时:
INSERT INTO `programmes` (`station_id`, `programme_start`, `programme_end`, `title`, `subtitle`, `long_description`, `short_description`, `rating`, `imdb`, `episode`, `season`, `year`, `categories`, `icon`, `actors`, `writers`, `directors`)
VALUES (1, '2018-10-16 00:00:00', '2018-10-16 00:20:00', 'NOS Journaal', '', 'Met het laatste nieuws, gebeurtenissen van nationaal en internationaal belang en de weersverwachting voor vandaag.', 'Met het laatste nieuws, gebeurtenissen van nationaal en internationaal belang en de weersverwachting voor vandaag.', '', '', '0', '0', '2017', 'Nieuws,', 'https://wp18-images-nl-dynamic.horizon.tv/EventImages/36652793.l.3dc8d9a6db753ad283c5909e6b29a7e61fb51d51.jpg', '', '', '')
ON DUPLICATE KEY UPDATE title = 'Test UPDATE'
它说它被插入了,但是这一行已经存在,所以它应该被更新而不是插入一个新的。
我的数据库包含几个表: - 提供商(包含所有电视指南/电视提供商) - 电台(所有电视台)电台的 id 链接到节目表,所以我可以找到一个电台的所有节目。 - 节目(包含所有电台的所有节目)。
我的程序表是用这个查询生成的:
CREATE TABLE programmes (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
station_id INT NOT NULL,
programme_start DATETIME NOT NULL,
programme_end DATETIME NOT NULL,
title TEXT NOT NULL,
subtitle TEXT NOT NULL,
long_description TEXT NOT NULL,
short_description TEXT NOT NULL,
rating VARCHAR(255) NOT NULL,
imdb VARCHAR(255) NOT NULL,
episode INT NOT NULL,
season INT NOT NULL,
year VARCHAR(255) NOT NULL,
categories TEXT NOT NULL,
icon TEXT NOT NULL,
actors TEXT NOT NULL,
writers TEXT NOT NULL,
directors TEXT NOT NULL
);
providers 表和stations 表使用唯一ID 作为参考。这样我可以找到提供者 id=1 或 id=2 的所有电台,这样我就可以获得电台 id=1 或 id=2 等的所有节目。
【问题讨论】:
-
我们总是乐于帮助和支持新的编码员,但您需要先帮助自己。 :-) 在doing more research 之后,如果您有问题发布您尝试过的方法,并清楚地解释什么不起作用并提供a Minimal, Complete, and Verifiable example。阅读How to Ask 一个好问题。请务必take the tour 并阅读this。
-
好的,我会改变我的问题。我的道歉..我现在正在努力解决这个问题好几天..它已经深入我的皮肤;)
-
你的表的唯一键是什么?
-
第一列 (id) 但因为该表每天都会被清除并填充更新电视指南数据。我创建表的备份,并执行
delete * from programmes然后我重置自动增量 -
delete *不是有效的声明;去掉星号。
标签: php mysql sql duplicates