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

选择表中不在特定范围内的值

蒋何平
2023-03-14
问题内容

我有一个带有id列和成千上万行的表。我获得了1000个ID的列表,用于对照其他表格数据进行检查。 ID没有按顺序存储。
ID列表也不按顺序排列。
当我使用这些ID选择表格数据时,仅返回990个结果,这意味着自该列表产生以来,其中10个结果已更改/被删除。如何从该数据范围中找到10个缺失值?这是我目前正在做的事情:

select * from mytable
where theId in (100, 2223, 31, 43321...92199, 14000)

返回990个结果。我可以做类似的事情吗?

select val from (1, 2, 3, 4...999, 1000) 
where val not in (
select * from mytable
where theId in (1, 2, 3, 4...999, 1000)
)

编辑:抱歉造成混乱。我应该提到ID的顺序不是特定的,我只是以数字1000为例。它们以随机顺序排列,而1000只是从更大的表(100,000行)中选择的。


问题答案:

可能会出现缺少这些ID的任何记录的情况,或者可能存在其他ID小于1或大于1000的其他ID。如果表中有1000条记录,而查询中只有990条记录,则肯定有丢失的记录id小于1或大于1000。因此,这些丢失的记录将出现在以下查询中:

select val from mytable where 
val not in ( select distinct theId from mytable where theId in (1, 2, 3, 4...999, 1000))

更新 :

对于随机ID,您可以执行以下操作:

create table #temp (id int)
insert into #temp values
(501),
(1),
(21),
......
....
(4350)

SELECT t.id
FROM #temp t
LEFT OUTER JOIN mytable mt on t.id = mt.device_id
WHERE mt.id IS NULL

drop table #temp


 类似资料:
  • 我有两个表,我必须根据查询从两个表中选择值 我有两个表,如,每个表都有相同的列。在中,我有额外的列 我必须从性别为男性的tab1和tab2中选择所有值 怎么办? 这是正确的吗?

  • 我的数据库中有100000个地址(即记录)。 它们中的每一个都有自己的坐标(纬度和经度)。 现在,考虑到用户的地理位置(纬度和经度),我只想在地图上显示5英里范围内的地址(使用Google maps v3 API)。 这意味着通常在100000个地址中只需显示5或6个地址。 一种解决方案可能是检索所有记录,并在Java中应用一个公式来计算每个地址的距离,并且仅当它在范围内时才显示它。 这将浪费处理

  • 问题内容: 我需要基于连续数字(第N列)和这些数字涉及的相同“类别”(下面的C列)从表中提取连续范围。图形上看起来像这样: SQL Server是2005。谢谢。 问题答案: 结果 :

  • 问题内容: 我正在尝试创建一个Android应用程序,该应用程序将在给定范围内(但在它们之间 不 相等)生成一系列随机值(在这种情况下为整数),并在简单的TextView中显示它们 假设我们有范围 R = [1、2、3、4、5、6、7、8、9、10、11、12、13] 每次我按下 “生成” 按钮时,我想随机生成5个不同的结果 每个“生成”的示例: 4,9,2,12,10 5、1、6、8、13 10

  • 范围选择器(rangeSelector)是图表中用于选择数据范围的工具,它提供了预配置的时间选择按钮,包括 1天,1周,1个月等,同时也提供时间输入框用于手动指定时间范围。 时间选择按钮 通过 rangeSelector.buttons 可以指定时间选择按钮,默认是 buttons: [{ type: 'month', count: 1, text: '1m' }, {

  • 选择颜色范围 “色彩范围”命令选择现有选区或整个图像内指定的颜色或色彩范围。如果想替换选区,在应用此命令前确保已取消选择所有内容。“色彩范围”命令不可用于 32 位/通道的图像。 若要细调现有的选区,请重复使用“色彩范围”命令选择颜色的子集。例如,若要选择青色选区内的绿色区域,请选择“色彩范围”对话框中的“青色”选项并单击“确定”。然后,重新打开“色彩范围”对话框并选择“绿色”。(由于此技术在颜色