-7

我正在尝试从基于“首选项”的表中获取值。

我有一个表“t1”,包括两列“id”和“alphabet”

样本数据

1 A
1 B
2 A
3 A
3 B

这意味着每个 id 都有默认值“A”,有些有“B”)。

现在我想根据“B”的偏好获取“id”的值。因此,如果一个 ID 同时具有 A 和 B,我想要 B 行。如果没有找到 B 行,则应返回默认 A。

4

1 回答 1

2

这可能会稍微偏离,因为 mysql 方言总是让我失望。由于 B 在字母排序中位于 A 之后,如果您按 ID 分组然后选择最大值,它将为您提供它们存在的所有 B 行,否则您将获得 A 行。

SELECT
    ID,
    MAX(alphabet) AS preference
FROM
    t1
GROUP BY
    ID

现在,如果您的数据比您所指示的更复杂,您将需要检查 MAX 逻辑是否仍然适用。

于 2013-01-24T22:33:30.023 回答