mysql数据库出现错误代码1064是什么原因?

mysql数据库出现错误代码1064是什么原因?,第1张

说明拼写出现错误。以错误拼写为例讲解mysql数据库出现错误代码1064的情况:

1、输入如图所示的SQL语句。

2、会看到有error错误信息提示 如图大致意思就是第一行这句SQL语句有语法错误。

3、仔细阅读语句会看到select这个拼写错。

4、where拼写错,修改即可。

一层一层解释吧.

首先, 最外面那层

SELECT * FROM `table`

WHERE id >= ...

ORDER BY id LIMIT 1

是查询 `table` 表, 要求 id 大于 那个 ...

然后 ORDER BY id , 是要求查询结果,按照 id 排序。 从小到大。

LIMIT 1 是 只返回查询结果的第一行。

------

如果上面的看明白了,那么下面开始说说子查询里面的处理

(SELECT

floor( RAND() * (

(SELECT MAX(id) FROM `table`) -

(SELECT MIN(id) FROM `table`)

) + (SELECT MIN(id) FROM `table`)

)

)

floor 是 向下取整

例子:

mysql>SELECT FLOOR(-23.5), FLOOR(23.5)

+--------------+-------------+

| FLOOR(-23.5) | FLOOR(23.5) |

+--------------+-------------+

| -24 | 23 |

+--------------+-------------+

1 row in set (0.00 sec)

RAND 是随机数

RAND()

返回一个随机浮点值 v ,范围在 0 到1 之间 (即, 其范围为 0 ≤ v ≤ 1.0)。

MAX(id) 与 MIN(id) 是 查询 表里面 最大的 id 与 最小的 id.

逻辑看下来, sql 的功能, 有点像是, 从 `table` 表, 随机获取一条数据。

其实没必要这么麻烦。

简单的写:

SELECT * FROM `table`

ORDER BY RAND()

LIMIT 1

就可以实现了。

子查询1:select bookid,count(bookid) as degree from tb_borrow group by bookid

----是说从表tb_borrow中查询每本书的个数,查询结果的格式是两列,bookid和degree,degree就是该书的个数,查询结果存为“borr”

子查询2:select b.*,c.name as bookcasename,p.pubname,t.typename from tb_bookinfo b left join tb_bookcase c on b.bookcase=c.id join tb_publishing p on b.ISBN=p.ISBN join tb_booktype t on b.typeid=t.id where b.del=0

----是说先把tb_bookinfo作为表b和表c(tb_bookcase)做左连接(这个链接条件是b.bookcase=c.id),再把链接得到的表和表p(tb_publishing)做链接(链接条件是b.isbn=p.isbn),再把链接得到的表也表t(tb_booktype)做链接(链接条件是b.typeid=t.id),从这链接好的表中搜索,条件是b.del=0,把查询结果存为表book

然后把borr和book做链接(链接条件是borr.bookid=book.id),把表中元素按borr.degree倒序排列,选出个数最多的10个

就是这样


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7381433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存