【问题标题】:How to select id of rows where other columns differ?如何选择其他列不同的行的id?
【发布时间】:2023-01-13 17:37:08
【问题描述】:

给定一张桌子“数据”带柱子“ID”,“a1”,“a2”,“a3”,以及以下行:

[1, 'b', 300, 10], [2, 'c', 111, 12], [3, 'b', 300, 10], [4, 'b', 300, 10]

有没有办法只选择那些信息存储在列中的行的ID“a1”,“a2,“a3”,不同? 在这种情况下,输出应该是:

[1, 2] 或 [2, 3] 或 [2, 4]

“同一行”的代表 id 是取自第一行、第三行还是第四行都没有关系。 我试过的:

SELECT id
FROM data
GROUP BY a1, a2, a3;

这当然不会工作,除非我禁用ONLY_GROUP_BY_ALL模式,但是我宁愿不禁用此类功能并转向替代方案(如果存在)。

【问题讨论】:

  • 您是否了解此类对的数量可能非常大?
  • @Akina 当然可以,但我不需要所有组合,只需要一个组合,它是哪一个并不重要,因为它们代表其他 3 列中的相同数据

标签: mysql sql


【解决方案1】:

开个玩笑:

SELECT t1.id, t2.id
FROM data t1 
JOIN data t2 ON (t1.a1, t1.a2, t1.a3) <> (t2.a1, t2.a2, t2.a3)
LIMIT 1

如果某些列可能为 NULL 那么

SELECT t1.id, t2.id
FROM data t1 
JOIN data t2 ON NOT ((t1.a1, t1.a2, t1.a3) <=> (t2.a1, t2.a2, t2.a3))
LIMIT 1

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多