【发布时间】:2017-07-24 15:53:08
【问题描述】:
我有两个关系表(我使用外键的原因是因为 kv 是我的 json 数据中的嵌套对象):
CREATE TABLE analytics(
e VARCHAR(50),
t VARCHAR(50),
kv_id INT AUTO_INCREMENT
);
CREATE TABLE kv(
kv_id INT AUTO_INCREMENT,
url VARCHAR(100),
name VARCHAR(100),
referrer VARCHAR(100),
id VARCHAR(100),
sessionID VARCHAR(100),
quote BIGINT(20),
category VARCHAR(50),
hitCallback VARCHAR(50),
eventType VARCHAR(50)
)
我目前正在使用:
SELECT * FROM
Analytics
LEFT OUTER JOIN
Kv
ON
Analytics.kv_Id = KV.kv_id
我试图让 kv_id 列只出现一次,但最好不要更改架构。如果它出现两次,我将不得不使用 JDBC 在我的 ResultSet 对象中解析它。如果我可以在查询中摆脱它会简单得多。我尝试通过用所需的列替换星号来指定我想要的列名,但它返回语法错误。我只尝试了两个连续的选择查询。我也尝试过联合,但它返回列数不匹配(我猜联合是添加行而不是列)。我希望这个问题的答案能让我在 java 方面避免臃肿,并可能指出我的模式设计中可能存在的任何问题。如果这是不好的设计,请指出,这是我第一次在数据库和 Web 应用程序之间传输 JSON 数据。
编辑:我正在使用一个 H2 数据库 supports “IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle 和 PostgreSQL 的兼容模式”
【问题讨论】:
-
只需在
SELECT中列出您需要的列,而不是使用SELECT * -
谢谢! @Isaiah3015 更明确地解释了这一点
-
这太基础了,您需要阅读已发布的 SQL 简介。 (许多教科书都是在线免费的。)
标签: sql json foreign-keys relational-database