[求助] 求一个效率高的SQL语句

amwps 2008-02-02 11:58:08
我的表结构是这样的:

一张横表 CONTENT 字段如下:

ID NAME AREA
0 ‘A’ ‘NJ’
1 ‘A’ ‘NJ’

一张纵表 CONTENTVISUAL 字段如下:

ID FIELDNAME FIELDVALUE
0 F1 V1
0 F2 V2
0 F3 V3
1 F1 V1
1 F2 V2
1 F3 V3


要求查询出的结果:
ID NAME AREA F1 F2 F3
0 'A' 'NJ' V1 V2 V3
1 'B' 'NJ' V1 V2 V3


我原来是把纵表乘三次先变成横表,然后查,这样效率太低了,请达人们指点一个效率较高的查询语句,小弟先谢了!!
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sulins 2008-02-03
  • 打赏
  • 举报
回复
可以
amwps 2008-02-02
  • 打赏
  • 举报
回复
谢谢!

我试了下,第二个语句效率好象比第一个高N倍,呵呵

另还有一个疑问:如果我的横表一个ID一定会对应纵表里三条记录(F1,F2,F3),
那么这句WHERE A.ID=B.ID(+)可以写成WHERE A.ID=B.ID吗??
sulins 2008-02-02
  • 打赏
  • 举报
回复
"B"是表的别名
_liangzi_ 2008-02-02
  • 打赏
  • 举报
回复
结果里的B怎么来的?
sulins 2008-02-02
  • 打赏
  • 举报
回复
数据量大的话,以下语句比较效率较高:

SELECT
ID,
NAME,
AREA,
MAX(DECODE(FIELDNAME, 'F1', FIELDVALUE, '')) F1,
MAX(DECODE(FIELDNAME, 'F2', FIELDVALUE, '')) F2,
MAX(DECODE(FIELDNAME, 'F3', FIELDVALUE, '')) F3
FROM
(
SELECT
A.ID,
A.NAME,
A.AREA,
B.FIELDNAME,
B.FIELDVALUE
FROM CONTENT A, CONTENTVISUAL B
WHERE A.ID=B.ID(+)
) T
GROUP BY ID, NAME, AREA
sulins 2008-02-02
  • 打赏
  • 举报
回复
纵表CONTENTVISUAL中列FIELDNAME的值已知的情况下,一下脚本实现最建单,

SELECT
ID,
NAME,
AREA,
(SELECT B.FIELDVALUE FROM CONTENTVISUAL B WHERE B.ID=A.ID AND B.FIELDNAME='F1') F1,
(SELECT B.FIELDVALUE FROM CONTENTVISUAL B WHERE B.ID=A.ID AND B.FIELDNAME='F2') F2,
(SELECT B.FIELDVALUE FROM CONTENTVISUAL B WHERE B.ID=A.ID AND B.FIELDNAME='F3') F3
FROM CONTENT A
weixin138社区互助养老+ssm是一个基于Spring、SpringMVC和MyBatis(简称SSM)框架的社区互助养老服务平台。该平台主要针对老年人群体,提供了一个便捷、高效的互助养老服务。通过该平台,老年人可以发布信息,寻志愿者的帮助;同时,志愿者也可以在平台上找到需要帮助的老人,为他们提供力所能及的关爱和支持。 该平台采用了以下技术: Spring:一个轻量级的Java开发框架,用于实现项目的依赖注入、事务管理等功能。 SpringMVC:一个基于MVC设计模式的Web框架,用于处理HTTP请,实现前后端分离。 MyBatis:一个持久层框架,用于实现数据库的增删改查操作,简化了SQL语句的编写。 MySQL:一个关系型数据库管理系统,用于存储平台的数据信息。 Redis:一个高性能的键值对数据库,用于缓存数据,提高系统的响应速度。 Bootstrap:一个前端框架,用于构建响应式布局,使平台在不同设备上都能正常显示。 jQuery:一个JavaScript库,用于简化DOM操作,提高前端开发效率。 该平台具有以下功能: 用户注册与登录:用户可以在平台上注册账号,并通过账号密码登录。 发布信息:用户可以发布自己的信息,包括标题、内容、图片等。 浏览信息:用户可以查看其他用户发布的信息,了解他们的需。 志愿者报名:志愿者可以报名参与帮助老人,填写自己的联系方式等信息。 评价与反馈:用户可以对志愿者的服务进行评价,同时也可以向平台提供反馈意见。 个人信息管理:用户可以修改自己的个人信息,如头像、昵称等。 系统管理:管理员可以对用户、信息等进行管理,维护平台的正常运行。 总之,weixin138社区互助养老+ssm是一个基于SSM框架的社区互助养老服务平台,采用了多种技术实现,为老年人提供了一个便捷、高效的互助养老服务。

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧