在我的表中,我有一个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将成为默认号码。)
这个查询会是什么样的?
答案 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
。