Heim Backend-Entwicklung PHP-Tutorial 安插不重复记录~求一mysql语句~

安插不重复记录~求一mysql语句~

Jun 13, 2016 am 10:33 AM
insert name replace select

插入不重复记录~~~求一mysql语句~~~
表结构很简单:

SQL code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--------------------------------id  |  cat  |  article-------------------------------- 1       abc           1 2       aaa           2 3       ccc           1--------------------------------
Nach dem Login kopieren

其中id是唯一主键,AUTO_INCREMENT,对于插入记录来讲没什么用。

现在要插入一些记录,当新记录的cat和article_id在原先数据中都未出现时才允许插入。比如cat='ddd',article=1和cat='aaa',article=1的记录都允许插入,但是cat="abc",article=1和cat="ccc",article=1的记录都不允许插入,因为已经存在这样的记录了。

请问怎么写mysql语句呢?

网上找的帖子,看得不是很懂,貌似都依赖主键不重复的。

------解决方案--------------------
在 cat 和 article 上做联合唯一索引

插入时用 replace 指令
------解决方案--------------------
你都不看手册的吗?这样如何进步?

CREATE [UNIQUE|FULLTEXT] INDEX index_name
ON tbl_name (col_name[(length)],... )


REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT ...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name=expression, col_name=expression,...

REPLACE 功能与 INSERT 完全一样,除了如果在表中存在一个老的记录与新记录在一个 UNIQUE 或 PRIMARY KEY 上有相同的值,那么在新记录被插入之前,老的记录将被删除。查看章节 6.4.3 INSERT 句法。 

换句话说,你不可以从一个 REPLACE 中访问老的记录行的值。某些老的 MySQL 版本中,你或许可以这样做,但是这是一个 Bug,现在已被修正了。 

为了能够使用 REPLACE,你必须有对该表的 INSERT 和 DELETE 权限。 

当你使用一个 REPLACE 时,如果新的记录行代替了老的记录行,mysql_affected_rows() 将返回 2。这是因为在新行被插入之前,重复记录行被先删除了。 

这个事实使得判断 REPLACE 是否是添加一条记录还是替换一条记录很容易:检查受影响记录行的值是 1 (添加)还是 2(替换)。 

注意,除非你使用一个 UNIQUE 索引或 PRIMARY KEY ,使用 REPLACE 命令是没有感觉的,因为它会仅仅执行一个 INSERT。

------解决方案--------------------
那你就这样: insert ignore into .............
但是也要在 cat 和 article 上做联合唯一索引
------解决方案--------------------
最笨的办法就是插入前,select一下是否该值已存在。
------解决方案--------------------
直接用select查吧
------解决方案--------------------
repalce into tablename(id,name) values('.$id.','".$name."'); or replace into tablename(id,name) select id,name
------解决方案--------------------
按楼主的想法先select再insert这种方式还不如replace呢
------解决方案--------------------
建议用replace,比较简单高效。
------解决方案--------------------
select 白瞎,又不锁表, 根本不是原子的,白判断。

直接唯一索引插入看结果。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Asynchrone Verarbeitungsmethode von Select Channels Go zur gleichzeitigen Programmierung mit Golang Asynchrone Verarbeitungsmethode von Select Channels Go zur gleichzeitigen Programmierung mit Golang Sep 28, 2023 pm 05:27 PM

Asynchrone Verarbeitungsmethode der gleichzeitigen Programmierung von SelectChannelsGo mit Golang Einführung: Die gleichzeitige Programmierung ist ein wichtiger Bereich in der modernen Softwareentwicklung, der die Leistung und Reaktionsfähigkeit von Anwendungen effektiv verbessern kann. In der Go-Sprache kann die gleichzeitige Programmierung mithilfe von Channels- und Select-Anweisungen einfach und effizient implementiert werden. In diesem Artikel wird die Verwendung von Golang für die asynchrone Verarbeitungsmethode der gleichzeitigen Programmierung von SelectChannelsGo vorgestellt und spezifische Informationen bereitgestellt

So verbergen Sie das ausgewählte Element in jquery So verbergen Sie das ausgewählte Element in jquery Aug 15, 2023 pm 01:56 PM

So verbergen Sie das Select-Element in JQuery: 1. Methode hide (), fügen Sie die jQuery-Bibliothek in die HTML-Seite ein, Sie können verschiedene Selektoren verwenden, um das Select-Element auszublenden, der ID-Selektor ersetzt die SelectId durch die ID des von Ihnen ausgewählten Elements tatsächlich verwenden; 2. css()-Methode, verwenden Sie den ID-Selektor, um das ausgewählte Element auszuwählen, das ausgeblendet werden muss, verwenden Sie die css()-Methode, um das Anzeigeattribut auf „none“ zu setzen, und ersetzen Sie selectId durch die ID des ausgewählten Elements.

Was ist der Unterschied zwischen Einfügen, Ignorieren, Einfügen und Ersetzen in MySQL? Was ist der Unterschied zwischen Einfügen, Ignorieren, Einfügen und Ersetzen in MySQL? May 29, 2023 pm 04:40 PM

Der Unterschied zwischen insertignore-, insert- und replacement-Anweisungen ist bereits vorhanden oder nicht. ;replace Ersetzen und einfügen replacementintonames(name,age)values("Xiao Ming", 25); Tabellenanforderungen: PrimaryKey oder eindeutiges Indexergebnis: Die Tabellen-ID wird automatisch erhöht. Testcode erstellt Tabelle

So verwenden Sie die REPLACE-Funktion, um einen bestimmten Teil einer Zeichenfolge in MySQL zu ersetzen So verwenden Sie die REPLACE-Funktion, um einen bestimmten Teil einer Zeichenfolge in MySQL zu ersetzen Jul 25, 2023 pm 01:18 PM

MySQL ist ein häufig verwendetes relationales Datenbankverwaltungssystem, das eine Vielzahl von Funktionen zum Verarbeiten und Betreiben von Daten bietet. Unter anderem wird die REPLACE-Funktion verwendet, um den angegebenen Teil der Zeichenfolge zu ersetzen. In diesem Artikel stellen wir die Verwendung der REPLACE-Funktion zum Ersetzen von Zeichenfolgen in MySQL vor und demonstrieren ihre Verwendung anhand von Codebeispielen. Schauen wir uns zunächst die Syntax der REPLACE-Funktion an: REPLACE(str,search_str,replace_str).

So implementieren Sie die Änderungsereignisbindung ausgewählter Elemente in jQuery So implementieren Sie die Änderungsereignisbindung ausgewählter Elemente in jQuery Feb 23, 2024 pm 01:12 PM

jQuery ist eine beliebte JavaScript-Bibliothek, die zur Vereinfachung der DOM-Manipulation, Ereignisbehandlung, Animationseffekte usw. verwendet werden kann. Bei der Webentwicklung stoßen wir häufig auf Situationen, in denen wir die Ereignisbindung für ausgewählte Elemente ändern müssen. In diesem Artikel wird erläutert, wie Sie mit jQuery ausgewählte Elementänderungsereignisse binden, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir ein Dropdown-Menü mit Optionen erstellen, die Beschriftungen verwenden:

Verwenden Sie die StringBuilder.insert()-Funktion von Java, um eine Zeichenfolge an der angegebenen Position einzufügen Verwenden Sie die StringBuilder.insert()-Funktion von Java, um eine Zeichenfolge an der angegebenen Position einzufügen Jul 24, 2023 pm 09:37 PM

Verwenden Sie die Funktion StringBuilder.insert(), um eine Zeichenfolge an einer bestimmten Position einzufügen. StringBuilder ist eine Klasse zur Verarbeitung variabler Zeichenfolgen in Java. Sie bietet verschiedene Methoden zum Betreiben von Zeichenfolgen Angegebene Positionen Eine der gebräuchlichsten Methoden zum positionellen Einfügen von Zeichenfolgen. In diesem Artikel stellen wir vor, wie man mit der Funktion insert() einen String an einer bestimmten Position einfügt, und geben entsprechende Codebeispiele. einfügen()

Was sind die Techniken zum Suchen und Ersetzen von Zeichenfolgen in Python? Was sind die Techniken zum Suchen und Ersetzen von Zeichenfolgen in Python? Oct 20, 2023 am 11:42 AM

Welche Techniken gibt es zum Suchen und Ersetzen von Zeichenfolgen in Python? (Spezifisches Codebeispiel) In Python sind Zeichenfolgen ein häufiger Datentyp, und in der täglichen Programmierung stoßen wir häufig auf Such- und Ersetzungsvorgänge für Zeichenfolgen. In diesem Artikel werden einige gängige Techniken zum Suchen und Ersetzen von Zeichenfolgen vorgestellt, begleitet von spezifischen Codebeispielen. Um einen bestimmten Teilstring in einem String zu finden, können Sie die Methode find() oder index() des Strings verwenden. Die Methode find() gibt den Index des ersten Vorkommens des Teilstrings im String zurück.

Wie füge ich Tabellenzeilen in jQuery hinzu, bearbeite und lösche sie? Wie füge ich Tabellenzeilen in jQuery hinzu, bearbeite und lösche sie? Sep 05, 2023 pm 09:49 PM

Im heutigen Zeitalter der Webentwicklung ist eine effektive und effiziente Tabellenverwaltung sehr wichtig geworden, insbesondere beim Umgang mit datenintensiven Webanwendungen. Die Möglichkeit, Zeilen dynamisch einer Tabelle hinzuzufügen, zu bearbeiten und zu löschen, kann das Benutzererlebnis erheblich verbessern und Anwendungen interaktiver machen. Eine effektive Möglichkeit, dies zu erreichen, besteht darin, die Leistungsfähigkeit von jQuery zu nutzen. jQuery bietet viele Funktionen, die Entwicklern bei der Durchführung von Vorgängen helfen. Tabellenzeilen Eine Tabellenzeile ist eine Sammlung miteinander verbundener Daten, die durch Elemente in HTML dargestellt werden. Es wird verwendet, um Zellen (dargestellt durch Elemente) in einer Tabelle zu gruppieren. Jedes Element wird zum Definieren einer Zeile in der Tabelle verwendet und enthält bei Tabellen mit mehreren Attributen normalerweise ein oder mehrere Elemente. Syntax$(selector).append(co

See all articles