如果数据记录不存在,请将其存储到另一个表中

时间:2016-04-21 12:28:28

标签: mysql sql

我正在寻找一个执行以下操作的SQL代码:

  1. SELECT * FROM fzs_contest WHERE answer = 'D' order by rand() limit 1;
  2. 将上面代码的结果存储到表 fzs_contest_winners (如果表不存在则创建表)
  3. 如果数据记录已经存在于表 fzs_contest_winners 中,请重新排列第1行,直到它是唯一的。
  4. 仅限SQL可以吗?

1 个答案:

答案 0 :(得分:0)

第一次获得有效的获胜者怎么样?

insert into fzs_contest_winners ( . . .)
    select . . . 
    from fzs_contest c
    where answer = 'D' and
          not exists (select 1 from fzs_context_winners cw where cw.?? = c.??)
    order by rand()
    limit 1;

??用于标识两个表中某人相同的列。

注意:如果两个线程同时运行,则此类查询可以选择相同的获胜者两次。但是,我似乎不太可能一次选择多个获胜者。此外,您应该保证一个人只使用唯一索引在表格中出现一次。