我已经搜索了这个,但在这件事上找不到任何答案。对于我的Databases类,我们必须演示在我们创建的数据库上使用某些SQL函数。其中一个函数是MIN(),另一个是MAX()等。
发生在我身上的是,当运行命令SELECT nome AS mais_barato FROM equipamento HAVING MIN(preço);
(名称是葡萄牙语:nome = name,mais_barato = cheaper,equipamento = equipment,preço= price)时,输出如下:
+-------------+
| mais_barato |
+-------------+
| ZON Hub |
+-------------+
人们会期待(原始表格更加明显,您可以自己看看会发生什么):
+-------------+
| mais_barato |
+-------------+
| Modem |
+-------------+
声明中有什么问题?运行SELECT nome AS mais_caro FROM equipamento HAVING MAX(preço);
(mais_caro = more_expensive)时,输出与使用MIN(preço)
的输出相同。
原始表equipamento
是(cod是与设备相关的唯一代码):
+-----+----------+--------+
| cod | nome | preço |
+-----+----------+--------+
| 152 | ZON Hub | 120 |
| 228 | PowerBox | 100 |
| 444 | Fibra | 200 |
| 673 | NetGear | 70 |
| 779 | Modem | 50 |
+-----+----------+--------+
我在Ubuntu 13.10上使用mysql Ver 14.14 Distrib 5.5.34, for debian-linux-gnu (i686) using readline 6.2
非常感谢
答案 0 :(得分:1)
只是猜测:MySQL错误地将MIN()和MAX()解释为此处的布尔值。
你的问题并不完全清楚,但我猜你只是想要一个order by子句:
SELECT nome AS mais_caro
FROM equipamento
ORDER BY preço DESC limit 1
如果没有,请查看子查询,例如:
SELECT nome AS mais_caro
FROM equipamento
WHERE preço = (SELECT MAX(preço) FROM equipamento);
denis=# create table test (id serial);
CREATE TABLE
denis=# select id from test having min(id);
ERROR: argument of HAVING must be type boolean, not type integer
LINE 1: select id from test having min(id);
^
相比之下,MySQL已经发现,除非您启用严格模式,否则会接受大量垃圾。