说明拼写出现错误。以错误拼写为例讲解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个
就是这样
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)