论坛首页 招聘求职论坛

一道有趣的sql题2

浏览 10543 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2011-04-13  
  select  'columnA' col,year, columna data from test_a    union all
   select  'columnB' col, year, columnb data from test_a 
0 请登录后投票
   发表时间:2011-04-17  
sdtm1016 写道
《SQL HACKS》

这本书中红色的部分有这个很好的解释

第1章 SQL基础
1. 在命令行中运行SQL
2. 在程序中连接到SQL上
3. 执行条件INSERT
4. 更新数据库
5. 使用SQL求解填字游戏
6. 不反复执行相同的计算
第2章 连接、联合和视图
7. 不破坏现有查询的修改模式
8. 过滤行和列
9. 在索引列上过滤
10. 将子查询转换为JOIN
11. 将聚合子查询转换为JOIN
12. 简化复杂的更新
13. 为关系选择正确的连接风格
14. 生成组合
第3章 文本处理
15. 不用LIKE搜索关键词
16. 跨列搜索字符串
17. 求解重组字
18. 排序电子邮件
第4章 日期处理
19. 将字符串转换为日期
20. 发现数据中的趋势
21. 基于任何日期条件的报告
22. 生成季度报告
23. 月份的第二个星期二
第5章 数值处理
24. 计算结果集的乘积
25. 计算累加和
26. 包含JOIN遗忘的行
27. 识别重叠范围
28. 避免零做除数
29. 计算行数的其他途径
30. 计算两个字段的最大值
31. 反聚合COUNT
32. 克服舍入误差
33. 同时得到值和小计
34. 计算中位数
35. 将结果展示为图表
36. 计算GPS定位之间的距离
37. 让货物清单和支付清单对应起来
38. 找出换位错误
39. 计算累进税
40. 计算名次
第6章 联机应用
41. 将Web页面复制到表中
42. 使用SVG图形化地展示数据
43. 将导航特性添加到Web应用上
44. 从Microsoft Access中隧道访问MySQL
45. 处理Web服务器日志
46. 在数据库中存储图像
47. 利用SQL注入漏洞
48. 防止SQL注入攻击
第7章 组织数据
49. 跟踪不常变化的值
50. 合并包含不同数据的表
51. 将行显示为列
52. 将列显示为行

53. 清除不一致的记录
54. 去规范化你的表
55. 移入其他人的数据
56. 做媒
57. 生成唯一序列号
第8章 存储少量数据
58. 在数据库中存储参数
59. 定义个性化参数
60. 创建一系列的个性参数
61. 设置基于行的安全性
62. 不用表执行查询
63. 不使用表生成行
第9章 加锁与性能
64. 确定你的隔离级别
65. 使用悲观锁
66. 使用乐观锁 
67. 事务中的隐含加锁
68. 处理不期待的重做
69. 在数据库中执行函数
70. 将查询结合起来
71. 提取大量数据行
72. 提取结果集的子集
73. 文件和数据库的混合存储
74. 比较和同步表
75. 在一对多连接中最小化带宽
76. 使用压缩避免LOB
第10章 制作报表
77. 在数据透视表中填写遗漏的数据
78. 按范围分组
79. 唯一地标识更新
80. 玩Six Degrees of Kevin Bacon游戏
81. 构造决策表
82. 生成顺序的或遗漏的数据
83. 找出每个组中的前n个元素
84. 在列中存储逗号分隔的列表
85. 遍历简单树
86. 在数据库中建立队列
87. 生成日历
88. 从子查询中测试两个值
89. 五选三
第11章 用户和管理
90. 实现应用程序级账户
91. 移出和移入表定义
92. 部署应用程序
93. 自动创建数据库用户
94. 创建用户和管理员
95. 生成自动更新
96. 创建审计跟踪
第12章 更广阔的访问
97. 允许匿名账户
98. 找出并停止耗时漫长的查询
99. 不要用尽磁盘空间
100. 从Web页面中运行SQL



哪里有中文版。只找到英文的,可否共享一下,谢谢
0 请登录后投票
   发表时间:2011-04-23  
yangguo 写道
biaobiao520 写道
yangguo 写道
biaobiao520 写道
SELECT a.col , a.YEAR, a.columna DATA
  FROM (SELECT 'columna' col, YEAR, columna
          FROM my_test) a,
       (SELECT 'columnb' col, YEAR, columnb
          FROM my_test) b
WHERE a.YEAR = b.YEAR
UNION ALL
SELECT b.col, b.YEAR, B.COLUMNB DATA
  FROM (SELECT 'columna' col, YEAR, columna
          FROM my_test) a,
       (SELECT 'columnb' col, YEAR, columnb
          FROM my_test) b
WHERE a.YEAR = b.YEAR;

整理了一下别名,貌似column不能用作列名



受教了


晕。。。
好像直接这么取就可以了。。。
SELECT a.col , a.YEAR, a.columna DATA
  FROM (SELECT 'columna' col, YEAR, columna
          FROM my_test) a
UNION ALL
SELECT b.col, b.YEAR, B.COLUMNB DATA
  FROM (SELECT 'columnb' col, YEAR, columnb
          FROM my_test) b




哈哈,我刚发短信给你,也是这样。

SELECT 'columna' col, YEAR, columna
          FROM my_test
UNION ALL
SELECT 'columnb' col, YEAR, columnb
          FROM my_test
...为什么要查2便?
0 请登录后投票
   发表时间:2011-06-23  
这个有函数,属于比较高级的应用了,不过感觉意义不大吧,找本sql应用书,应该有答案
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics