在特定组合不可用时添加新行,否则更新字段

时间:2011-09-06 03:58:49

标签: mysql sql

我有以下结构的表

id         int             auto increment, primary key
uid        int             (comment: userid)
cdt        date/time       (comment: current date)
hits       int             (comment: no. of hits)

现在,我需要一个查询,例如

对于'uid'和'cdt'的特定组合,如果有可用行,则更新命中(即,添加1到命中),否则添加带有'uid'和'cdt'值的新行,并点击设为1

让我用例子进一步澄清

说uid = 01,cdt = 2010-01-01,如果表中没有uid和cdt的组合,则应插入新行,否则应更新点击值

如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以分两步完成此操作:

<强>首先
查询数据库以了解该特定记录是否存在:

SELECT id FROM your_table 
WHERE uid = your_user_id AND cdt = your_date 

<强>第二
如果先前的查询返回零行:

INSERT INTO your_table
(uid, cdt, hits)
SELECT your_user_id, your_date, 1

其他:

UPDATE your_table
SET hits = hits + 1
WHERE uid = your_user_id AND cdt = your_date