Filipe
Filipe

Reputation: 281

Increment a column if a row already exists with the same values

This one's a bit too tricky for my SQL-foo.

What I need to do is insert a new row (which contains 3 columns), unless a row already exists where two of those values are the same, and if it does exist, I need to increment the third value on that row.

Imagine the two values being a relationship (a, b) and the third value being the relationships's strength (which increases with every ocurrence of that relationship).

Thanks in advance!

Upvotes: 8

Views: 2076

Answers (1)

Quassnoi
Quassnoi

Reputation: 425341

INSERT
INTO    a_b (a, b, strength)
VALUES  ($a, $b, 1)
ON DUPLICATE KEY
UPDATE  strength = strength + 1

Make sure you have a UNIQUE (a, b) or PRIMARY KEY (a, b) constraint on the table

Upvotes: 12

Related Questions