У шимпанзе почты есть довольно хорошая статья о том, что не делать. (Я знаю, что это звучит не так, как нужно)
http://kb.mailchimp.com/article/common-html-email-coding-mistakes
В общем, все, что вы узнали, это плохая практика для веб-дизайна, кажется единственной возможностью для html-email.
Основы:
Просто тест на столько клиентов электронной почты, сколько вы можете взять на себя, или использовать Litmus, как кто-то еще предложил выше! (кредит Джиму)
EDIT:
Почтовый шимпанзе проделали отличную работу, сделав этот инструмент доступным для сообщества.
Он применяет ваши классы CSS к вашим элементам html, встроенным для вас!
Ключ состоит в том, чтобы переписать этот запрос, чтобы его можно было использовать в качестве подзапроса.
SELECT firstname,
lastname,
list.address
FROM list
INNER JOIN (SELECT address
FROM list
GROUP BY address
HAVING COUNT(id) > 1) dup
ON list.address = dup.address;
Для быстрого наблюдения дублирующихся строк, можно выполнить единственный простой запрос
Сюда, я запрашиваю таблицу и перечисляю все дублирующиеся строки с тем же user_id, market_place и sku:
select user_id, market_place,sku, count(id)as totals from sku_analytics group by user_id, market_place,sku having count(id)>1;
Для удаления дублирующейся строки необходимо решить, какую строку Вы хотите удалить. Например, тот с более низким идентификатором (обычно более старый) или возможно некоторая другая информация о дате. В моем случае я просто хочу удалить более низкий идентификатор, так как более новый идентификатор является последней информацией.
Первая двойная проверка, если правильные записи будут удалены. Здесь я выбираю запись среди дубликатов, которые будут удалены (уникальным идентификатором).
select a.user_id, a.market_place,a.sku from sku_analytics a inner join sku_analytics b where a.id< b.id and a.user_id= b.user_id and a.market_place= b.market_place and a.sku = b.sku;
Тогда я выполняю запрос на удаление для удаления простофиль:
delete a from sku_analytics a inner join sku_analytics b where a.id< b.id and a.user_id= b.user_id and a.market_place= b.market_place and a.sku = b.sku;
Резервное копирование, Двойная проверка, проверьте, проверьте, что резервное копирование тогда выполняется.
[month, day, hours, min, sec]
или простая строка как ключ хеша; но я can' t говорят, не зная больше.
– molf
26 July 2010 в 21:56
SELECT *
FROM (SELECT address, COUNT(id) AS cnt
FROM list
GROUP BY address
HAVING ( COUNT(id) > 1 ))
Почему бы просто не СОЕДИНЯТЬ таблицу с самой собой?
SELECT a.firstname, a.lastname, a.address
FROM list a
INNER JOIN list b ON a.address = b.address
WHERE a.id <> b.id
DISTINCT необходим, если адрес может существовать более двух раз.
SELECT firstname, lastname, address FROM list
WHERE
Address in
(SELECT address FROM list
GROUP BY address
HAVING count(*) > 1)
Это выберет дубликаты за один проход таблицы, без подзапросов.
SELECT *
FROM (
SELECT ao.*, (@r := @r + 1) AS rn
FROM (
SELECT @_address := 'N'
) vars,
(
SELECT *
FROM
list a
ORDER BY
address, id
) ao
WHERE CASE WHEN @_address <> address THEN @r := 0 ELSE 0 END IS NOT NULL
AND (@_address := address ) IS NOT NULL
) aoo
WHERE rn > 1
Этот запрос фактически эмулирует ROW_NUMBER ()
, присутствующий в Oracle
и ] SQL Server
Подробнее см. В статье в моем блоге:
MySQL
. Не очень эффективно, но должно работать:
SELECT *
FROM list AS outer
WHERE (SELECT COUNT(*)
FROM list AS inner
WHERE inner.address = outer.address) > 1;