【问题标题】:Can Sequel Create And Query Temp Tables可以续集创建和查询临时表吗
【发布时间】:2020-02-10 04:26:09
【问题描述】:

我是 Sequel 的新手,但在 SQL 方面有很多背景。 对我所说的基本查询功能不起作用感到沮丧。我希望这只是让语法正确的问题。 我想创建一个临时表,将值插入该表,然后对其运行查询。 在 SQL 中我会运行这个-

CREATE TABLE #TMP (CHRGCD VARCHAR)
INSERT INTO #TMP SELECT DISTINCT(CHRGCD) FROM PACPTCD WHERE CCTRMDT = '9999-01-01'

SELECT CHRGCD FROM PACPTCD 
WHERE CHRGCD NOT IN (SELECT CHRGCD FROM #TMP)

我可以从 Sequel 中完成这一切,还是我必须创建一个真实的表,运行一个单独的脚本来填充它,然后运行查询的最后一部分?

表 PACPTCD 中的数据可以有多个 CHRGCD 条目,但 CCTRMDT 可能会有所不同。我正在尝试查找 CHRGCD 的值不为 9999-01-01 的所有实例。似乎是最简单的方法。欢迎就其他获取数据的方式提出建议。

【问题讨论】:

  • 是和不是。在查询中,您可以有嵌套选择。内部选择构建一个临时表,外部选择将从该临时表中进行选择。类似于 SELECT * FROM (SELECT Fname, Lname FROM people)
  • 您在此处使用临时表似乎是针对特定 SQL 实现中的缺陷的一种解决方法。您是否尝试过简单地将第一个查询扩展到第二个查询以查看性能如何?
  • 无法更改实现,而且性能仍然很糟糕。每次发现简直就是疯狂的东西,只能面对手掌。

标签: ruby sequel


【解决方案1】:

感谢用户 007。 我最终改变了查询。

 SELECT CHRGCD FROM PACPTCD
 WHERE CHRGCD NOT IN (SELECT DISTINCT(CHRGC) FROM PACPTCD WHERE CCTRMDT='9999-01-01')

有十几种方法。这个是最简单的。比我原来的还要容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-21
    • 2022-11-22
    • 2013-07-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2014-08-03
    相关资源
    最近更新 更多