【发布时间】:2016-01-14 04:39:33
【问题描述】:
我有 29 个独立的议会地址数据表,具有相同的字段标题和数千个条目。我正在尝试根据应该出现在至少一个表中的属性 id 来查找地址。我一直在尝试使用联合查询;
SELECT "ST_NO_FROM","STREET","ST_TYPE"
FROM "list_address_points_break_o_day"
WHERE "PID" = 6413877
UNION
SELECT "ST_NO_FROM","STREET","ST_TYPE"
FROM "list_address_points_brighton"
WHERE "PID" = 6413877
每次我尝试使用此查询并需要恢复时,Base 都会崩溃。有谁知道为什么会这样?
【问题讨论】:
-
尝试使用 UNION ALL(而不仅仅是“联合”)它不会将结果减少到唯一的行,因此它消耗的资源更少。
-
错误信息是什么?
-
你用的是什么引擎?默认是嵌入式 HSQLDB 1.8,这不是一个非常健壮的设置。
-
大家好。我什至没有收到错误消息,它只是完全退出。我也尝试了 UNION ALL,它仍然在做同样的事情。我正在使用 HSQLDB 1.8,但是除了从 29 个表中查询一行之外,我认为我需要的并不是太复杂。我现在正在考虑尝试构建一个 CASE 语句,它允许我直接转到所需的单个表,这可能是一个更优雅的解决方案。欢迎任何有这方面好例子的人在这里提出!
-
您确实选择了 Edit→Run SQL Directly 选项,是吗? Base 解析器无法处理 UNION,因此您必须确保绕过解析器并将 SQL 直接发送到后端(在您的情况下为 HSQLDB)。
标签: sql union hsqldb libreoffice-base