【发布时间】:2019-10-04 15:49:21
【问题描述】:
我有一个这样的数据表。更贴切的数据描述。
col0 | col1 | col2 | col3 | col4
======================================
milk | egg | juice | |
egg | juice | | |
bread | jam | juice | |
wheat | egg | juice | |
jam | juice | | |
我想首先在所有列中搜索 Juice 并获取找到 juice 的所有行。然后我必须获取具有最独特和完整数据的行。在这种情况下,它是第一行,因为它具有最独特和最完整的数据集,没有重复的单词。所以,如果我从这些数据中搜索“果汁”,那么我想要这个结果
milk | egg | juice |
bread | jam | juice |
wheat | egg | juice |
我已尝试在所有列组合上使用 GROUP BY 和 DISTINCT,但我无法获得所需的结果。
我用了这个说法
SELECT * FROM `table`
WHERE `col4` = 'juice' OR`col3` = 'juice' OR `col2` = 'juice' OR `col1` = 'juice'
group by `col2`,`col1`,`col0`;
我更希望它出现在一个语句中,而不是单独的语句中。
【问题讨论】:
-
如果有不止一行具有相同计数的大多数唯一值怎么办?在这种情况下,你会如何决定抢七局?
-
如果您将列级数据存储在行中,这可能会更容易。 stackoverflow.com/questions/8868395/sql-multi-valued-attributes
-
@MadhurBhaiya 我正在使用的实际数据不允许这样做。数据的模式与显示的数据相似。
-
@user2649343 多列中是否存在重复值?还是所有的值都是唯一的?此外,当没有值时,它表示为一个空字符串?或
NULL? -
这种问题表明设计不佳。考虑修改您的架构。