mysql - 将错误消息列值与查询中使用的列名匹配
问题描述
所以用查询:
ALTER TABLE table ADD PRIMARY KEY (id_0_col, id_1_col, text_01_col, text_02_col);
产生错误:
Error Code: 1062. Duplicate entry '11535-1013-FRA-TZN-MON-TON' for key 'PRIMARY'
在查询中使用了 4 列。这些列中的某些值带有连字符。mysql 产生的错误信息使用连字符来分隔列值。
您如何将错误消息中的值与查询中使用的列名进行匹配,以构建后续查询以查找违规行?
解决方案
要查找有问题的行(重复行),您可以简单地使用GROUP BY
with HAVING
。以下查询将获取与它们对应的多于一行的所有组合:
SELECT
id_0_col, id_1_col, text_01_col, text_02_col
FROM your_table_name
GROUP BY id_0_col, id_1_col, text_01_col, text_02_col
HAVING COUNT(*) > 1
现在,要获取所有这些行,您可以简单地将此查询包装在Derived Table中,然后重新加入以获取所有“违规行”:
SELECT
t.*
FROM your_table_name AS t
JOIN (
SELECT
id_0_col, id_1_col, text_01_col, text_02_col
FROM your_table_name
GROUP BY id_0_col, id_1_col, text_01_col, text_02_col
HAVING COUNT(*) > 1
) AS dt ON dt.id_0_col = t.id_0_col
AND dt.id_1_col = t.id_1_col
AND dt.text_01_col = t.text_01_col
AND dt.text_02_col = t.text_02_col
推荐阅读
- c# - 使用 NULL 节点的 C# XML 反序列化
- wordpress - 安装了 SSL 的 Chrome 显示“不安全”
- c# - 拆分错误以在asp.net c#中检索整数
- c# - 在 autofac 中注册 GlobalConfiguration.Configuration.DependencyResolver
- python-3.x - 如何在每次迭代后减小 ndarray 的大小?
- javascript - 如何克隆输入类型的文件内容?
- vba - Excel VBA 运行时错误
- ios - 当它不是 rootviewcontroller 并且没有导航控制器时,如何从 SKScene 访问以前的视图控制器?
- button - 使用引导程序使用移动设备时如何使按钮组成为下拉列表
- python - 如何在 Keras 中设置一维卷积和 LSTM