Mailing List
Home
Forum Home
MySQL General - General MySQL discussion
MySQL++ - Programming with the C++ API to MySQL
MaxDB - Everything about MaxDB, formerly known as SAP DB
ODBC - ODBC with the MySQL Connector/ODBC driver
MySQL on Win32 - Runing MySQL on Windows 9x/Me/NT/2000/XP
Java Help - Mostly related to the MySQL Connector/J driver
Perl - Perl support for MySQL with DBI and DBD::mysql
GUI - MySQL GUI Tools
Announcement
Subjects
Subject: mysql openssl Question
ERROR 1045: Access denied for user: 'root@localhost ' (Using
password: NO)
Update one field with more fields from another table
Subject: Getting Identity after INSERT
ERROR 2002: Can 't connect to local MySQL server through socket
mysql test 4 1 fails with the gis test
Subject: MySQL Cluster Software
Downgrade Mysql from 4 to 3 23
Mysql 4 0 Oracle Stored Procedure Trigger Conversion
Can 't access mysql after kernel upgrade
Executing MySQL Commands From Within C Program
Comparing and writing out BLOBS
Subject: Re: Preventing Duplicate Entries
FULLTEXT query format question
Strange behavior, Table Level Permission
Does the binary log enabling affect the MySQL performances?
mysql:it 's a db not a dbms how it 's possible?!
mysql have same function mthod as Oracle decode()
 
append on insert

append on insert

2007-11-03       - By Baron Schwartz

 Back
Kevin Waterson wrote:
> I have a table of item
> I wish to have the value of the item incremented if there is a duplicate.
> I looked at ON DUPLICATE KEY UPDATE but this modifies the exsisting value.
> If the item is my-item and this already exists, I need to make it my-item-2 (See http://tem-2.ora-code.com)
> or even my-item-123 (See http://tem-123.ora-code.com) where 123 is the key.

For the record, what you're doing sounds like an abuse of databases, but...

INSERT INTO item (`key`)
SELECT CONCAT('my-item',
   (SELECT IF(COUNT(*) = 0, '', CONCAT('-', COUNT(*)))
      FROM item WHERE `key` LIKE 'my-item%'));

Before anyone points out the problems with this, of which there are
several, remember I'm only giving Kevin enough rope to hang himself ;-)

Kevin, this design is not first normal form and will cause you trouble.
 Consider what will happen if you insert my-item, my-item, and then my-ite.

Baron

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=mysql@(protected)