Mysql是啥???
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql是啥???相关的知识,希望对你有一定的参考价值。
mysql是什么???
Mysql是一个数据库系统,比较小型但很实用。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
应用环境
与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。
参考技术A MySQL是一个真正的多用户,多线程的SQL数据库服务器。是一个客户机/服务器结构的实现,它由一个服务器守护程序MYSQLd和不同的客户程序和库组成。由于其源码的开放性及稳定性,且与网站流行编程语言php的完美结合,很多站点都利用其作为后端数据库,获得了广泛应用。本回答被提问者采纳 参考技术B Mysql是一种开源数据库,与PHP连接性能较好!所以常用来做网站数据存储。 参考技术C 数据苦 的一种,比较流行,说那么多有什么用,简单的语言是智慧的灵魂! 参考技术D 是一款免费的数据库,它于PHP组合。有很好的效果。Mysql 中的 Error#1221 是啥,这个 SqlQuery 的基本问题是啥?
【中文标题】Mysql 中的 Error#1221 是啥,这个 SqlQuery 的基本问题是啥?【英文标题】:What is Error#1221 in Mysql and is basic problem in this SqlQuery?Mysql 中的 Error#1221 是什么,这个 SqlQuery 的基本问题是什么? 【发布时间】:2009-09-17 12:51:02 【问题描述】:我正在使用 MYSQL5.1,虽然我试图为此查找文档但没有成功,其次我想知道以下查询中的逻辑错误..
SQL 查询
选择日期、月份、总和(fact_1)、 ( 2 / Sum(fact_2) ) , 2 FROM( 选择 时间.日期,时间.月,时间.年, MAX(sales_fact.sell_out_value) 作为 fact_1, 0 as fact_2 FROM sales_fact, time_dim 作为时间 WHERE time.id=sales_fact.time_id AND time.date="2008-01-01" 分组 time.date ORDER BY time.year UNION 选择时间.日期,时间.月, time.year, 0 as fact_1, MAX(sales_target_fact.sell_out_target) 作为来自 sales_target_fact 的 fact_2, time_dim 作为时间 WHERE time.id=sales_target_fact.time_id AND time.date="2008-01-01" 分组 time.date ORDER BY time.year ) as Combined_Table GROUP BY 日期 ORDER BY 年份
错误行
UNION 和 ORDER BY 用法不正确 错误代码#1221【问题讨论】:
【参考方案1】:该错误表明您的ORDER BY
不明确,您需要将您的SELECT
语句括起来以向MySQL 表明它是如何应用的。
来自MySQL Docs:
使用 ORDER BY 或 LIMIT 子句 排序或限制整个 UNION 结果, 将单个 SELECT 括起来 声明并放置 ORDER BY 或 LIMIT 在最后一个之后。
因此,根据您的查询,将每个查询放在括号内,并将 ORDER BY
放在括号外:
SELECT date , month , Sum(fact_1) , ( 2 / Sum(fact_2) ) , 2
FROM(
(SELECT time.date, time.month, time.year,
MAX(sales_fact.sell_out_value) as fact_1, 0 as fact_2
FROM sales_fact, time_dim as time
WHERE time.id=sales_fact.time_id AND time.date="2008-01-01"
GROUP BY time.date)
UNION
(SELECT time.date, time.month, time.year, 0 as fact_1,
MAX(sales_target_fact.sell_out_target) as fact_2
FROM sales_target_fact, time_dim as time
WHERE time.id=sales_target_fact.time_id AND time.date="2008-01-01"
GROUP BY time.date)
ORDER BY time.year
) as Combined_Table GROUP BY date ORDER BY year
或者,如果您希望ORDER BY
在UNION
之前单独应用于每个语句,请将ORDER BY
放在两个SELECT
语句中的每一个的括号内。
SELECT date , month , Sum(fact_1) , ( 2 / Sum(fact_2) ) , 2
FROM(
(SELECT time.date, time.month, time.year,
MAX(sales_fact.sell_out_value) as fact_1, 0 as fact_2
FROM sales_fact, time_dim as time
WHERE time.id=sales_fact.time_id AND time.date="2008-01-01"
GROUP BY time.date
ORDER BY time.year)
UNION
(SELECT time.date, time.month, time.year, 0 as fact_1,
MAX(sales_target_fact.sell_out_target) as fact_2
FROM sales_target_fact, time_dim as time
WHERE time.id=sales_target_fact.time_id AND time.date="2008-01-01"
GROUP BY time.date
ORDER BY time.year)
) as Combined_Table GROUP BY date ORDER BY year
【讨论】:
@Adam ::thanx 的友好回复,这是否意味着 order by 与 group by 不同,只能应用一次? @Sam:查看我编辑的回复,您也可以将 ORDER BY 与每个选择一起使用,方法是将其放在括号内。 @Adam,ohhthanx for the reply 即使我询问的问题在阅读了相应的文档后也很清楚,thanx for the help @Adam 但为什么我们需要内括号?? @Sam:我猜这是因为第二个 ORDER BY 不明确,除非您提供括号,否则 mySQL 无法判断它是否适用于它后面的 SELECT 或者它是否适用于整个 UNION。我不确定它是否关心第一个 ORDER BY 是否在括号内,但我认为使用并行语法可能是最好的。【参考方案2】:http://dev.mysql.com/doc/refman/5.1/en/
也许错误出现在“,time_dim as time”中,但我不确定 - 尝试剪切部分直到错误消失,你会发现错误
【讨论】:
以上是关于Mysql是啥???的主要内容,如果未能解决你的问题,请参考以下文章