首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字段不同的MySQL更新

问字段不同的MySQL更新
EN

Stack Overflow用户
提问于 2012-04-15 03:38:02
回答 2查看 147关注 0票数 0

我有一个关于MySQL查询的问题。我(显然)希望使用尽可能少的查询,希望只有一个。如果信息不同,我要做的就是更新数据库中的一列。

例如,假设我有列"referer“和列"date”。如果用户单击该链接,而引用人不同,但日期相同,我只想更新引用人列。

这是我当前的查询:

代码语言:javascript
复制
mysql_query ("
  UPDATE clicks 
  SET 
    clicks = clicks + 1
  , referers = CONCAT(referers, ',$referer')
  , dates = CONCAT(dates, ',$date')
  WHERE shortURL = '$url' 
  AND referer != $referer
");

有没有办法将其整合到一个查询中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-15 03:50:33

您应该阅读一些关于数据库规范化的内容。第一个规范化规则是:字段必须是原子的。在您的例子中:不要将多个引用/日期保存到一个用逗号分隔的字段中。

票数 1
EN

Stack Overflow用户

发布于 2012-04-15 03:57:20

我同意规范化的答案,但是如果你坚持..听起来你需要一个CASE语句:

代码语言:javascript
复制
UPDATE clicks
SET 
  clicks = clicks + 1
, referers = CONCAT(referers, ',$referer')
, dates = 
   CASE
     WHEN dates REGEXP '/$date/' THEN dates
     ELSE CONCAT(dates, ',$date')
   END CASE
WHERE shortURL = '$url' 
AND referers NOT REGEXP '/$referer/'

注意:这里假设$referer和$date没有任何特殊的正则表达式字符!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10156740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档