Kri*_*ian 15 mysql sql distinct
为什么此查询会产生"重复条目"错误?
TRUNCATE parim_firm_tag_names;
INSERT INTO parim_firm_tag_names (firm_tag_name_value)
SELECT DISTINCT sona
FROM parim_marksona;
Run Code Online (Sandbox Code Playgroud)
错误信息:
SQL错误(1062):重复条目'1 - ??????? ??????" 对于'firm_tag_name_value'键
正如你所看到的,firm_tag_name_value有一个唯一的索引,我使用DISTINCTselect,我正在截断所有现有的数据tag_names.
什么会产生这个错误?
Ome*_*esh 16
这可能会发生,因为collations两个表上的定义不同,parim_firm_tag_names并且 parim_marksona使用distinct的字符串比较可能会导致区分大小写和不区分大小写的collation值的值不同.
您可以collation使用此查询检查列:
SHOW FULL COLUMNS FROM parim_marksona;
SHOW FULL COLUMNS FROM parim_firm_tag_names;
Run Code Online (Sandbox Code Playgroud)
要避免此错误,您可以使用,从列sona中将列的排序规则转换为列的排序规则,同时从表中选择不同的值.firm_tag_name_valueCOLLATEparim_marksona
假设列整理firm_tag_name_value为latin1_swedish_cs:
TRUNCATE parim_firm_tag_names;
INSERT INTO parim_firm_tag_names (firm_tag_name_value)
SELECT DISTINCT sona COLLATE latin1_swedish_cs
FROM parim_marksona;
Run Code Online (Sandbox Code Playgroud)
这应该没有错误.
有关更多详细信息,请参阅手动列字符集和排序规则.
| 归档时间: |
|
| 查看次数: |
1144 次 |
| 最近记录: |