为一组FK设置布尔值

时间:2014-11-10 00:18:57

标签: mysql

在我的表中,我有一个PK,一个FK,一个数字和一个标志,如下所示:

tableID | PK of table
refID   | FK to another table
phoneNo | Phone number
default | Flag for default number

数据样本:

tableID|refID|phoneNo|default
-------+-----+-------+-------
1      |23   |1234567|0
2      |23   |4987546|0
3      |23   |6576546|1
4      |24   |3289832|0
5      |24   |5225454|0
6      |24   |9126386|0
7      |25   |3287293|1

如您所见,ID 23和25有默认电话号码,但ID 24没有。

我想写一些让我查看refID是否有默认号码的内容 如果他们没有默认号码,请将第一个号码设为默认号码(在这种情况下,tableID 4将成为默认号码。)

这个查询会是什么样的?

1 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

UPDATE table1
INNER JOIN (
  SELECT MIN(tableID) AS tableID 
  FROM table1 
  WHERE refID NOT IN (SELECT refID FROM table1 WHERE `default` = 1)
  ) AS minrows ON table1.tableID = minrows.tableID
SET table1.`default` = 1;

这会为每个没有default=1行的RefID的第一行设置default=1

Sample SQL Fiddle