【问题标题】:Derby Select over subquery not working子查询上的德比选择不起作用
【发布时间】:2014-09-19 22:28:39
【问题描述】:

Derby 是否不允许您在另一个查询的返回关系上进行选择?

例如,这个查询可以正常工作:

SELECT * 
FROM users, stats 
WHERE users.uid = stats.uid;

但此查询返回错误:

SELECT username, hits 
FROM (
  SELECT * 
  FROM users, stats 
  WHERE users.uid = stats.uid
);

错误显示:

Error: Syntax error: Encountered "<EOF>" at line 1, column 83.
SQLState:  42X01
ErrorCode: 30000

我已经习惯了 Oracle,这很好用。

上面的查询只是一个例子,我知道我可以选择用户名,点击原本就不需要嵌套查询。

【问题讨论】:

  • 不确定 derby 是否要求内联查询使用表别名,但您可能想尝试 SELECT username, hits FROM (SELECT * FROM users, stats WHERE users.uid = stats.uid) B; 大多数 RDBMS 要求您使用内联查询别名。
  • 您好,刚刚尝试过,它可以工作,除了您必须使用 AS 关键字来别名。非常感谢
  • 注意:关于你的最后一个问题,我不是反对者。我不认为这是一个糟糕的问题,只是一个不成熟的问题。您在 Google 上找不到解决方案的原因很可能是因为您正在寻找整个问题的解决方案,而您却找不到。您仍然需要分步,而这样做并不需要 Swing 知识。然后,当您尝试解决每一个小步骤时,如果您失败了,您能够找到 Google 或 StackOverflow 解决方案,或者失败了,发布更好更具体的问题。祝你好运!!
  • @HovercraftFullOfEels 酷,我认为这是一个公平的观点。我只是想出了一种方法来做到这一点,使用 jTextPane 和 setCaretPosition,只是启动一个线程,通过循环和更新插入符号位置然后在每个周期中延迟来对其进行动画处理。直到我到达文本的末尾,然后 setCaret 到顶部。我还没有尝试过,但我想它可能会奏效。感谢您的建议

标签: sql database select subquery derby


【解决方案1】:

正如上面 xQbert 所提到的,Derby 要求您在内联查询中为表设置别名。

问题的解决方法是这样做:

SELECT username, hits 
FROM (
  SELECT * 
  FROM users, stats 
  WHERE users.uid = stats.uid
) AS tmp;

感谢 xQbert 的帮助

【讨论】:

  • 我认为这是一个错误。德比有修复它的计划吗?
  • 我不确定这是否是一个错误。我想也许这正是他们的 SQL 方言的工作方式。但我不是这方面的专家
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 2010-11-09
相关资源
最近更新 更多