【问题标题】:SELECT statement for each Where clause每个 Where 子句的 SELECT 语句
【发布时间】:2018-04-16 11:28:05
【问题描述】:

我想从具有相同条件的 WHERE 子句的 Select 语句中获取单独的结果集。显然也可能有不同的条件。这个查询是程序的一部分,所以它必须准确地给我我需要的东西。例如

SELECT * from MyTable 
WHERE 
  x = 'DISPMSG' OR  x = 'DISPMSG' OR x = 'DISPMSG' OR x = 'DISPMSG' 
OR x = 'DISPMSG' OR x = 'RSSET';

这个查询给我带来的显然是 2 个结果集。但我想要的是它应该给我 same result 在大小为 5 和 1 的数组中设置不同的条件,因为 where 子句中有 5 + 1 个条件。我知道查询需要循环或其他东西,但无法找出正确的方法。

感谢您的帮助。

【问题讨论】:

  • SO 是ask GOOD questions 的一个很好的网站并获得答案:请务必提供完整的MCVE。在您提出问题之前,请考虑talking to the duck first。是的,我是认真的!为了帮助我们帮助您,生成样本数据和预期结果。 ascii table 使输出易于阅读!您还可以模拟数据并尝试使用rextester.com 或类似站点的 SQL。
  • 我想你想要记录集中的 6 条记录 5 是 dispmsg 和 1 是 rsset。但是 where 子句过滤数据。因此,如果您没有 5+1 条记录,SQL 将不会创建它。现在....您可以交叉加入一个包含 5 条记录的表,并以某种方式将 dispmsg 计数为 5,将 rsset 复制记录计数为 1;但为什么?这种类型的操作在 UI 中处理得更好,而不是数据检索。当网络重复时,您为什么希望更多数据通过网络?当您可以获得较小的数据集并根据需要在 UI 中重复数据时,既发送数据又检索记录?
  • 感谢您的回复。我知道这是一个愚蠢的问题,也许我没有正确解释。我在 sqlite 数据库上使用它。我在想可能有一种方法可以获取每个 where 子句的记录。现在我知道没有办法,必须全部使用联合。但它仍然比在 UI 上工作更快。再次感谢您。

标签: sql sqlite select duplicates where


【解决方案1】:

我建议您使用“union all”运算符,您的查询将变为:

SELECT * from MyTable WHERE x = 'DISPMSG'
union all
SELECT * from MyTable WHERE x = 'DISPMSG'
union all
SELECT * from MyTable WHERE x = 'DISPMSG'
union all
SELECT * from MyTable WHERE x = 'DISPMSG'
union all 
SELECT * from MyTable WHERE x = 'RSSET';

【讨论】:

  • 如果有两条记录是 DISPMSG 会发生什么。那么 OP 是否要求 DISPMSG 的 10 条记录?
  • 谢谢您..您的解决方案有效。投了赞成票,但看不到投票。
  • 如果操作想要 10 条记录,那么将有 10 条联合。行动想要,我们遵守。 @DhBh 您能否将答案标记为已接受?而且您看不到投票,因为“某人”投了反对票。
猜你喜欢
  • 2012-01-26
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2011-09-19
  • 1970-01-01
相关资源
最近更新 更多