【问题标题】:How to get value from a table base on "Preference" [closed]如何根据“首选项”从表中获取价值[关闭]
【发布时间】:2013-01-08 19:27:21
【问题描述】:

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

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

样本数据

1 A
1 B
2 A
3 A
3 B

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

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

【问题讨论】:

  • 是的,单列中只有一个值.... A 或 B
  • 所以你想要所有的行,对吧?你只想按字母排序吗?如果是这种情况,请使用 ORDER BY 字母表。如果我误解了,我不明白你的意思是“获取所有字母为 B 的 id 和那些没有 B 的 ID,那么我可以获得 A 的值”。请进一步解释
  • 你能发布你的表结构、示例数据和想要的结果吗?
  • @AshishGinotra 实际上没有,你的问题不是很清楚。请使用表格结构、示例数据和所需结果等其他详细信息编辑您的帖子。
  • 对其他用户大喊大叫通常会适得其反。请花点时间重新阅读faq,也许特别是faq这部分?

标签: mysql if-statement


【解决方案1】:

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

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

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

【讨论】:

  • hiiii billinkc....首先感谢您理解我的问题并对其进行编辑..第二感谢您解决它.....真的它的作品是我想要的.....非常感谢billinkc
  • 欢迎来到 StackOverflow。如果您在网站上发现有帮助的问题或答案,请单击它们旁边的向上箭头。如果这已经回答了您的问题,请单击答案旁边的复选标记。
  • 嘿 billinkc ...还有一个问题。如果还有一列,则它没有获得价值。改为“字母”。请告诉我这怎么可能
猜你喜欢
  • 1970-01-01
  • 2014-03-16
  • 2017-07-07
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 2018-02-03
相关资源
最近更新 更多