假设我有一个这样的SQL表:
UniqueID Word
1 apple
2 orange
3 banana
4 apple
我想将哈希键创建为整数。该整数应映射到特定单词。因此,密钥具有一定的含义,我希望该数字是第一次出现的单词的唯一ID。这意味着我想生成一个这样的表:
Unique ID Word WordHash
1 apple 1
2 orange 2
3 banana 3
4 apple 1
我尝试使用group by语句,以及min(唯一ID),但是它摆脱了最后一个苹果行。我想保留这一行。
答案 0 :(得分:1)
SELECT t.UniqueID, t.Word, q.MinID AS WordHash
FROM YourTable t
INNER JOIN (SELECT Word, MIN(UniqueID) AS MinID
FROM YourTable
GROUP BY Word) q
ON t.Word = q.Word
答案 1 :(得分:1)
如果要在原始表中创建新列而不是仅获取结果集:
update
t
inner join (
select Word, min(UniqueID) as id
from t
group by Word
) s on t.Word = s.Word
set t.WordHash = s.id
答案 2 :(得分:1)
您需要执行以下查询
ALTER TABLE <table_name> ADD COLUMN `WordHash` INT NULL AFTER `Word`;
UPDATE <table_name> t INNER JOIN
(SELECT `word`, MIN(uniqueId) AS MinID FROM <table_name> GROUP BY `word`) q
ON t.word = q.word
SET WordHash = q.MinID;
希望它有所帮助...