假设我有一个包含四列的表:firstname、lastname、number(不是主键)和status。如果一个人的名字、姓氏和号码相同,但身份不同(其中身份是字符串,如“king”或“queen”或“jack”)。
我想从表中检索所有列的所有值,但是如果有重复的值,其中有同名、姓和编号相同的值,我想获取状态为“king”的值,如果有一个没有“国王”身份的复制品,那么得到那些带有“王后”的,如果没有带有“国王”或“王后”的复制品,那么只得到一个带有“杰克”的。
基本上,优先顺序是国王,王后,然后是杰克。所以,我想要表中的所有值,但如果有重复项,则只包括优先级最高的值。我做了一些研究,发现除了mysql以外的sql实现还提供了诸如dense\u rank之类的函数,但是我需要在mysql中实现,我找不到任何方法。
2条答案
按热度按时间h7wcgrx31#
一种方法是
union all
:另一种方法使用相关子查询:
vojdkbi02#
尝试使用会话变量: