我四处寻找了一段时间,我不确定我是否需要某种 IF 语句、LIMIT 语句或完全不同的东西。
情况
我有一个看起来像这样的数据库:
id | elem_id | elem_data | draft
1 | uniq1234 | examplestr | 0
2 | uniq1653 | examplestr | 1
3 | uniq9964 | examplestr | 0
4 | uniq1234 | examplestr | 1
等等……
我的意图
我只想为每个唯一的 elem_id
选择一行。如果存在两个,我想选择草稿值为 1 的那个。(因此,对于上表的查询,它会找到两次出现的 elem_id uniq1234
并选择具有草稿值为 1(即第 4 行)。
最佳答案
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT elem_ID, MAX(`Draft`) maxDraft
FROM tableName
GROUP BY elem_ID
) b ON a.elem_ID = b.elem_ID AND
a.`draft` = b.maxDraft
关于mysql - 如何为每个唯一字段仅选择 1 行(在重复的情况下由另一个字段确定哪个字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282718/