新手在sql注入中遇到的问题,觉得很疑惑

如下所示,为什么第一个可以达到延时的作用,但是第二个却不行,不太理解

mysql> SELECT * FROM users ORDER BY '1'and if(length(database())=8,sleep(0.1),0);
+----+----------+------------+
| id | username | password   |
+----+----------+------------+
| 10 | admin2   | admin2     |
| 14 | admin4   | admin4     |
|  2 | Angelina | I-kill-you |
|  5 | stupid   | stupidity  |
|  8 | admin    | admin      |
| 11 | admin3   | admin3     |
|  3 | Dummy    | p@ssword   |
|  6 | superman | genious    |
|  9 | admin1   | admin1     |
| 12 | dhakkan  | dumbo      |
|  1 | Dumb     | Dumb       |
|  4 | secure   | crappy     |
|  7 | batman   | mob!le     |
+----+----------+------------+
13 rows in set (1.42 sec)

mysql> SELECT * FROM users ORDER BY 'id'and if(length(database())=8,sleep(0.1),0);
+----+----------+------------+
| id | username | password   |
+----+----------+------------+
| 10 | admin2   | admin2     |
| 14 | admin4   | admin4     |
|  2 | Angelina | I-kill-you |
|  5 | stupid   | stupidity  |
|  8 | admin    | admin      |
| 11 | admin3   | admin3     |
|  3 | Dummy    | p@ssword   |
|  6 | superman | genious    |
|  9 | admin1   | admin1     |
| 12 | dhakkan  | dumbo      |
|  1 | Dumb     | Dumb       |
|  4 | secure   | crappy     |
|  7 | batman   | mob!le     |
+----+----------+------------+
13 rows in set, 13 warnings (0.00 sec)

这里就要涉及到and运算了,and两边为真,结果为真,否则为假, 这里‘1’and其实相当于1 and,因为1为真所以需要判断if(length(database())=8,sleep(0.1),0)是否为真,因此执行if(length(database())=8,sleep(0.1),0),而'id' and相当于0 and,因为0为假,所以不需要判断后面的值即可出结果因此此时的if(length(database())=8,sleep(0.1),0)并未执行。