我有这张桌子
我想要做的是选择attr_id
出现在哪里{DISTINCT name_en-GB
,然后选择为attr_id
选择name_en-GB
的<{1}}
我可以通过编写单个查询来完成此操作,但我想知道有什么方法可以在一个查询中执行此操作吗?
答案 0 :(得分:1)
你可以做到
UPDATE table1
SET attr_id = CASE `name_en-GB` WHEN 'Bride Name' THEN 142
WHEN 'Child Grade' THEN 270 END
WHERE `name_en-GB` IN('Bride Name', 'Child Grade')
这是 SQLFiddle 演示
答案 1 :(得分:0)
您可以使用MySQL过程执行简单的循环。
文档:http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
答案 2 :(得分:0)
你只需使用更新查询和选择就可以做到这一点。但是我不知道attr_id第一次出现的标准是什么
假设 - 第一次出现是最小的attr_id
UPDATE table t,
( SELECT MIN(attr_id), `name_en-GB`
FROM table
GROUP BY `name_en-GB`
) t1
SET t.attr_id = t1.attr_id
WHERE t1.`name_en-GB` = t.`name_en-GB`
答案 3 :(得分:0)
我终于完成了这个
UPDATE sc_product_phrase
JOIN (
SELECT
`caption`,
min(design_phrase_id) AS minai,
required
FROM
sc_product_phrase WHERE LENGTH(`options`) < 1
GROUP BY
`caption`
) tt ON sc_product_phrase.`caption` = tt.`caption`
AND sc_product_phrase.required = tt.required
SET design_phrase_id = tt.minai
WHERE
sc_product_phrase.design_phrase_id <> tt.minai
AND LENGTH(
sc_product_phrase.`options`
) < 1