我无法提出查询以确定我的mysql数据库中缺少哪些记录。
我不知道如何循环查找结构化列表中缺少的内容。
我有一个数据库用作我玩的在线游戏的位置图,字段结构如下:
地区|省|城市| PlayerInfo
地区/省/市都是数字值。区域值为1-30,省值为1-500。这些是固定的。我的数据库是列出玩家可能拥有的所有城市。一个省可能有多达20个城市,或者没有城市。当省内没有城市时,我会在数据库中创建一个空白城市和playerinfo值的记录。
例如:
R | P | C | PI
1 | 1 | 3 | Name1
1 | 1 | 7 | Name2
1 | 2 | 4 | Name3
1 | 3 | |
1 | 4 | 1 | Name2
1 | 4 | 4 | Name4
1 | 6 | 3 | Name5
etc
我要做的是找出缺少哪些地区/省组合。在这里的样本数据中,我想知道R:1 P:5。
有办法做到这一点吗?如果我能提供更多信息,请告诉我
答案 0 :(得分:1)
假设您有2个表(省和地区)包含有关省和地区的数据(如果不是很容易使用问题中所述的数值创建它们):
SELECT comb.reg AS R,comb.pro AS P FROM
your_table_above t
RIGHT JOIN
(
SELECT region.id AS reg, province.id AS pro
FROM region
JOIN province
ORDER BY region.id
) AS comb
ON t.R = comb.reg AND t.P = comb.pro
WHERE t.R IS NULL AND t.P IS NULL
此查询应该会返回上面绘制的表格中没有的所有组合。
修改强>
这是在下面的评论之后查询查询的方式:
SELECT comb.reg AS R,comb.pro AS P FROM
loc_table t
RIGHT JOIN
(
SELECT region.id AS reg, province.id AS pro
FROM region
JOIN province
ORDER BY region.id
) AS comb
ON t.Region = comb.reg AND t.Province = comb.pro
WHERE t.Region IS NULL AND t.Province IS NULL