当前位置: 首页 > 面试题库 >

根据列优先级选择记录

后星河
2023-03-14
问题内容

首先,这个问题的标题太可怕了,但是我没有找到更好的方式来描述我的问题。

可能有一种非常简单的方法来执行此操作,但我无法弄清楚。这与这个问题非常相似,但是我在sqlite3(iOS)上运行,因此我怀疑我的选择受到更多限制。

我有一张带有产品记录的表格。所有记录都有一个ID(请注意:我不是在说行ID,而是每个产品唯一的标识号)。某些产品在表中可能有两个条目(两者都具有相同的ID)。唯一的区别是在特殊列中(假设COLOR列可以是RED或GREEN)。

我想做的是基于COLOUR的值创建一个唯一产品列表,如果同一产品同时存在GREEN和RED记录,则优先使用GREEN。

简而言之,如果我有以下情况:

id       PRODUCT ID    COLOUR
1        1001          GREEN
2        1002          GREEN
3        1002          RED
4        1003          RED

我希望我的SELECT返回第1、2和4行。如何实现呢?

我当前的方法是拥有单独的表,并手动进行联接,但这显然是一个非常糟糕的主意。

注意:我尝试从这里使用相同的方法:

SELECT * 
  FROM xx
 WHERE f_COLOUR = "GREEN"
UNION ALL
SELECT * 
  FROM xx 
 WHERE id not in (SELECT distinct id 
                    FROM xx 
                   WHERE f_COLOUR = "GREEN");

但是我得到的结果是行1,2,3,4,而不是1,2,4。我想念什么?

编辑: 请再问一个问题:如何使它与记录的子集一起工作,即。如果要代替某些表而不是整个表,我是否要过滤一些记录?

例如,如果我有类似SELECT * FROM table的productID之类的“ 1%”……我如何检索每个唯一的产品,但仍要遵守颜色优先级(GREEN>
RED)?


问题答案:

您的查询几乎是正确的。只是使用PRODUCTID而不是ID

SELECT * 
FROM xx
WHERE f_COLOUR = "GREEN"
UNION
SELECT * 
FROM xx 
WHERE PRODUCTID not in 
                (SELECT PRODUCTID
                 FROM xx 
                 WHERE f_COLOUR = "GREEN");


 类似资料:
  • 本文向大家介绍属性选择器和伪类选择器的优先级?相关面试题,主要包含被问及属性选择器和伪类选择器的优先级?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 属性选择器和伪类选择器优先级相同

  • 我正在进行数据结构考试,我正在准备一系列复习题。我的问题如下: “假设你的朋友来找你,声称他发明了一个超快速的基于优先级的比较队列。优先级队列的速度如下(n 是当前在优先级队列中的项目数):a. 在 O(sqrt(logn))时间插入新项目 b. 在 O(sqrt(logn)) 时间从队列中提取(删除并返回)最小项目。 解释为什么你的朋友一定在撒谎: 据我所知,标准优先级队列的运行时间是用于提取的

  • 问题内容: CSS问题:如果两个不同的选择器应用于一个元素,谁会赢? 我知道这不应该发生,但是我想调整旧应用程序,而CSS居于中间。 问题答案: 规范中的实际上是合理可读的。综上所述: 规则和内联规则获胜。 否则,通常会赢得更具体的胜利。是比更加具体的选择器。 如果规则同样具体,则以最后宣布的为准。 没有特别的理由说明为什么这种“不应该发生”。通常先指定一个广泛适用的规则,然后添加一个更具体的规则

  • 本文向大家介绍CSS选择器有哪些,优先级呢?相关面试题,主要包含被问及CSS选择器有哪些,优先级呢?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: id 选择器,class 选择器,标签选择器,伪元素选择器,伪类选择器等 同一元素引用了多个样式时,排在后面的样式属性的优先级高; 样式选择器的类型不同时,优先级顺序为:id 选择器 > class 选择器 > 标签选择器; 标签之间存在层级包

  • 我的第一个想法是有两个COSUMER,每个队列一个,从每个队列获取消息并将它们放入java.util.PriorityQueue中,但我希望避免插入(和排序/阻塞/同步)的开销,因为会有大量的消息。 然后,我考虑了usign java.nio,但我想不出这是否可能。 我的想法是仍然拥有两个使用者,但现在他们将任务放在两个nio.buffer(高优先级缓冲区和低优先级缓冲区)中,这些缓冲区绑定到ni

  • 我需要一个优先级队列,它首先获得具有最高优先级值的项目。我当前正在使用队列库中的PriorityQueue类。但是,这个函数只先返回值最小的项。我尝试了一些很难看的解决方案,比如(sys.maxint-priority)作为优先级,但我只是想知道是否存在更优雅的解决方案。