我有一个关键字表,其中包含与之关联的整数权重。在另一张表中,我有一个文本表。我想通过查找关键字并对文本中的权重求和来计算每个文本的值。有没有办法在SQL中完全执行此操作?
答案 0 :(得分:1)
如果您将文字表示为
| text_id | count | word |
|---------+-------+-----------|
| 1 | 1 | nice |
| 1 | 2 | weather |
| 1 | 3 | no? |
| 2 | 1 | Mayer |
| 2 | 2 | Hawthorne |
| 2 | 3 | has |
| 2 | 4 | soul |
其中ID为1的文字是“天气不好?”,例如,您可以使用关键字表计算文本分数
| keyword | weight |
|-----------+--------|
| weather | 2 |
| nice | 3 |
| Hawthorne | 10 |
| soul | 5 |
与
SELECT t.text_id AS text_id, SUM(k.weight) AS score
FROM texts t
LEFT JOIN keywords k
ON k.keyword == t.word
GROUP BY t.text_id;
导致
| text_id | score |
|---------+-------|
| 1 | 5 |
| 2 | 15 |