這裏有兩種可能的方法,在數據庫級別,根據您的需要:
排名與聚合函數檢索
查詢來獲得排名:(假設每出現存儲在Person_Fruit表)
SELECT person, fruit, COUNT(*)
FROM person_fruit
WHERE person = 'the_person'
AND fruit = 'the_fruit'
GROUP BY 1, 2;
排名存儲在數據庫中
假設表水果(id,person,fruit,rank),與multi-column index對人和水果,所以你只有一個獨特的組合發生。
此前INSERT
/UPDATE
,檢查人員/水果已經存在:
SELECT id
FROM fruits
WHERE name = 'the_name' AND fruit = 'the_fruit';
如果沒有,INSERT
人/水果與1
等級值,因爲這是第一次發生:
INSERT INTO fruits (id, person, fruit, rank)
VALUES (NULL, 'the_person', 'the_fruit', 1); /* NULL should be replaced by auto-generated value, if set up for that */
如果是這樣,UPDATE
的排名:
UPDATE fruits
SET rank = rank +1
WHERE id = id /* You can use id returned from previous `SELECT`, or Person AND Fruit */