【问题标题】:INSERT INTO between tables with INNER JOIN使用 INNER JOIN 在表之间插入 INTO
【发布时间】:2011-12-06 23:38:22
【问题描述】:

CiviCRM 中的早期数据导入将一些成员编号放入自定义字段 (member_number),而不是更有用的 (external_id) 字段。

我的(诚然有限的)SQL 技能太生疏了,但我想做的是:

  1. 如果external_id字段为空,
  2. 并且contact_type 是“个人”
  3. 然后将数据从 member_number 复制到 external_id 以获取匹配的内部 ID 号。

我已经尝试了一些变体,但出现了不同的错误:

INSERT INTO test_table (external_id)
SELECT member_number 
FROM member_info
INNER JOIN test_table
ON memberinfo.entity_id=test_table.id
WHERE test_table.external_id IS NULL AND test_table.contact_type = "Individual"

我真的需要 INNER JOIN 吗?而且我知道 WHERE 语句通常是指您从中提取的表,而不是您要插入的表,但我不记得正确的方法。

【问题讨论】:

  • test_table 的表结构是什么?你遇到了什么错误?
  • 哎呀,意味着包括那个。 test_table 是 civicrm_contacts 表的克隆,不少字段大多是 varchar;错误是:#1062 - 键 'UI_external_identifier' 的重复条目 '0'
  • 没关系....我终于找到了它所指的“重复条目”,结果发现NULLS中有2个“0”值。不知道为什么会出现其他错误,但最终让它工作。谢谢...

标签: mysql sql phpmyadmin civicrm


【解决方案1】:
update test_table
set external_id = 
if(external_id = '' and contact_type = 'Individual', member_number,external_id)

【讨论】:

  • 这个没有成功,但我喜欢它的简单性,而且我确信这是在正确的轨道上。我仍然收到错误消息“#1054 - '字段列表'中的未知列 'member_number'”
猜你喜欢
  • 2014-01-23
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多