相关疑难解决方法(0)

在连接中,如何使用它来自的表为所有列名添加前缀

我正在分析一个相当可怕的遗留数据库/代码库,尝试通过将查询组合到连接中来减少服务器负载(包括通常调用超过一百万个单独查询的电子邮件警报cron作业).

SELECT * FROM 
class_alerts_holding ah 
INNER JOIN class_listings l ON l.id = ah.lid 
INNER JOIN class_users u ON u.id = ah.uid
LEFT JOIN class_prodimages pi ON pi.pid = ah.lid
Run Code Online (Sandbox Code Playgroud)

吐出120列......

aid | id | lid | uid | oid | catName | searchtext | alertfreq | listType | id | owner | title | section | shortDescription | description | featured | price | display | hitcount | dateadded | expiration | url | notified | searchcount | repliedcount …
Run Code Online (Sandbox Code Playgroud)

mysql sql

39
推荐指数
5
解决办法
4万
查看次数

为什么使用'*'构建视图不好?

为什么使用'*'构建视图不好?

假设您有一个复杂的连接,并且可以在某处使用所有字段.

然后你只需要选择所需的字段.

SELECT field1, field2 FROM aview WHERE ...
Run Code Online (Sandbox Code Playgroud)

视图"aview"可能是 SELECT table1.*, table2.* ... FROM table1 INNER JOIN table2 ...

如果table1和table2中的2个字段具有相同的名称,则会出现问题.

这只是为什么在视图中使用'*'不好的原因?

使用'*',您可以在不同的上下文中使用该视图,因为信息就在那里.

我错过了什么?

问候

sql view

22
推荐指数
5
解决办法
7266
查看次数

使用前缀对查询中的所有列进行别名

是否可以在选择中使用前缀对所有列进行别名?我在Oracle数据库中有一组表需要连接在一起,并且大多数表具有相同的列名.我想有类似的东西

select MAGIC_ADD_PREFIX("PREFIX", *) from TABLE
Run Code Online (Sandbox Code Playgroud)

并有一个结果

+---------+----------+----------+
|PREFIX_ID|PREFIX_FOO|PREFIX_BAR|
+---------+----------+----------+
|...      |          |          |
Run Code Online (Sandbox Code Playgroud)

ATM我唯一能想到的就像chumsky一样

select ID PREFIX_ID, FOO PREFIX_FOO, BAR PREFIX_BAR from TABLE
Run Code Online (Sandbox Code Playgroud)

但它很丑陋,因为地狱和容易出错

====进一步解释====

这个问题

select TABLE.*,...
Run Code Online (Sandbox Code Playgroud)

是我使用java + jdbc驱动程序来检索列,java.sql.ResultSet方法(resultset.getInt("COLUMNNAME"),.getString("COLUMNNAME")...)不支持语法"TABLENAME.COLUMNAME".

如果我这样做(简化,没有错误...)

ResultSet rs = mkResultSet("select * from table_a, table_b");
rs.next();
System.out.println(rs.getInt("table_a.id"));
Run Code Online (Sandbox Code Playgroud)

我得到一个SQLException无效的列名作为消息

oracle select alias jdbc

12
推荐指数
1
解决办法
5421
查看次数

标签 统计

sql ×2

alias ×1

jdbc ×1

mysql ×1

oracle ×1

select ×1

view ×1