【发布时间】:2014-12-31 11:05:54
【问题描述】:
我有一个触发器,当另一个表被写入时,我试图将其写入一个表。
问题是我正在读取的表是在这样的几行中存储 1 个条目(不是我的表,插件会这样写):
406 test5 74 63 2014-11-04 13:43:35
407 test5 75 63 2014-11-04 13:43:35
408 test5@w.com 76 63 2014-11-04 13:43:35
409 12345678909 78 63 2014-11-04 13:43:35
410 Movable Assets 79 63 2014-11-04 13:43:35
我正在使用以下内容写入我的新表:
INSERT INTO `new_memberlist`
(FirstName, LastName, Email, Phone, InterestedIn, Province, Status, DateRegistered)
(
select
MAX(case when field_id = 74 and entry_id = (SELECT MAX(entry_id) FROM ch_arf_entry_values) then entry_value end) as FirstName,
MAX(case when field_id = 75 and entry_id = (SELECT MAX(entry_id) FROM ch_arf_entry_values) then entry_value end) as LastName,
MAX(case when field_id = 76 and entry_id = (SELECT MAX(entry_id) FROM ch_arf_entry_values) then entry_value end) as Email,
MAX(case when field_id = 78 and entry_id = (SELECT MAX(entry_id) FROM ch_arf_entry_values) then entry_value end) as Phone,
MAX(case when field_id = 79 and entry_id = (SELECT MAX(entry_id) FROM ch_arf_entry_values) then (
select distinct concat(
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',2),'"',2),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',4),'"',4),'"',-1)
)
)
end) as InterestedIn,
MAX(case when field_id = 81 and entry_id = (SELECT MAX(entry_id) FROM ch_arf_entry_values) then (
select distinct concat(
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',2),'"',2),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',4),'"',4),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',6),'"',6),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',8),'"',8),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',10),'"',10),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',12),'"',12),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',14),'"',14),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',16),'"',16),'"',-1),
',',
SUBSTRING_INDEX(SUBSTRING_INDEX( SUBSTRING_INDEX(entry_value,'"',18),'"',18),'"',-1)
)
)
end) as Province,
'1' as Status,
NOW() as DateRegistered
from ch_arf_entry_values
WHERE entry_id = (SELECT MAX(entry_id) FROM ch_arf_entry_values)
GROUP BY entry_id
LIMIT 1
)
不幸的是,它被写了好几次,只有最上面的条目是正确的 1,我想保留它,它具有所有值且没有 NULL:
892 test5 test5 test5@w.com 12345678909 Movable Assets,Movable Assets NULL 1 2014-11-04 15:43:35
891 test5 test5 test5@w.com 12345678909 NULL NULL 1 2014-11-04 15:43:35
890 test5 test5 test5@w.com NULL NULL NULL 1 2014-11-04 15:43:35
889 test5 test5 NULL NULL NULL NULL 1 2014-11-04 15:43:35
888 test5 NULL NULL NULL NULL NULL 1 2014-11-04 15:43:35
887 NULL NULL NULL NULL NULL NULL 1 2014-11-04 15:43:35
任何帮助将不胜感激。
【问题讨论】:
-
如果您可以在SQL Fiddle 中创建表的实例并插入语句,我可能会为您提供帮助
标签: mysql sql triggers phpmyadmin