MySQL-选择最高工资
我需要选择一个住在城市的人,这个城市的名字以“W”字母开头,薪水最高。 我试过这个条件:MySQL-选择最高工资,mysql,Mysql,我需要选择一个住在城市的人,这个城市的名字以“W”字母开头,薪水最高。 我试过这个条件: SELECT o.imię, o.nazwisko, e.pensja, mO.nazwa FROM etaty e, osoby o, miasta mO WHERE(e.id_osoby = o.id_osoby) AND (mO.id_miasta = o.id_miasta) AND mO.nazwa LIKE 'W%' AND e.pensja = (SEL
SELECT o.imię, o.nazwisko, e.pensja, mO.nazwa
FROM etaty e, osoby o, miasta mO
WHERE(e.id_osoby = o.id_osoby) AND (mO.id_miasta = o.id_miasta)
AND mO.nazwa LIKE 'W%'
AND e.pensja = (SELECT MAX(eW.pensja) AS mp FROM etaty eW)
/* pensja = salary */
我没有错误,但没有结果。
当我试图放弃这个薪水条件时,一切都很好,或者当我试图放弃这个名字条件时——也一样。但我不能把这两个条件混合在一起,让它正常工作。我该怎么办?使用
限制
可能是这里最简单的选择:
SELECT o.imię, o.nazwisko, e.pensja, mO.nazwa
FROM etaty e
INNER JOIN osoby o ON e.id_osoby = o.id_osoby
INNER JOIN miasta mO ON mO.id_miasta = o.id_miasta
WHERE mO.nazwa LIKE 'W%'
ORDER BY e.pensja DESC
LIMIT 1;
当前查询失败的一个可能原因是max子查询正在查找数据集中某个点的最高薪资,该点正被联接过滤掉。要解决此问题,可以在max子查询中包含完整联接结构:
SELECT o.imię, o.nazwisko, e.pensja, mO.nazwa
FROM etaty e
INNER JOIN osoby o ON e.id_osoby = o.id_osoby
INNER JOIN miasta mO ON mO.id_miasta = o.id_miasta
WHERE
mO.nazwa LIKE 'W%' AND
e.pensja = (SELECT MAX(ew.pensja)
FROM etaty ew
INNER JOIN osoby ow ON ew.id_osoby = ow.id_osoby
INNER JOIN miasta mOw ON mOw.id_miasta = ow.id_miasta
WHERE mOw.nazwa LIKE 'W%');
使用
LIMIT
可能是此处最简单的选项:
SELECT o.imię, o.nazwisko, e.pensja, mO.nazwa
FROM etaty e
INNER JOIN osoby o ON e.id_osoby = o.id_osoby
INNER JOIN miasta mO ON mO.id_miasta = o.id_miasta
WHERE mO.nazwa LIKE 'W%'
ORDER BY e.pensja DESC
LIMIT 1;
当前查询失败的一个可能原因是max子查询正在查找数据集中某个点的最高薪资,该点正被联接过滤掉。要解决此问题,可以在max子查询中包含完整联接结构:
SELECT o.imię, o.nazwisko, e.pensja, mO.nazwa
FROM etaty e
INNER JOIN osoby o ON e.id_osoby = o.id_osoby
INNER JOIN miasta mO ON mO.id_miasta = o.id_miasta
WHERE
mO.nazwa LIKE 'W%' AND
e.pensja = (SELECT MAX(ew.pensja)
FROM etaty ew
INNER JOIN osoby ow ON ew.id_osoby = ow.id_osoby
INNER JOIN miasta mOw ON mOw.id_miasta = ow.id_miasta
WHERE mOw.nazwa LIKE 'W%');
如果没有表及其数据,很难说什么,但一个可疑的问题是表“etaty”与其他两个表没有正确连接,所以
SELECT MAX(eW.pensja) AS mp FROM etaty eW
不符合:
AND mO.nazwa LIKE 'W%'
可能没有一个以W开头的人薪水最高
我认为您需要在selectmax(pensja)子查询中添加相同的条件
然而,我可能是错的,因为没有结构很难预测。如果没有表,很难说出任何事情。他们的数据,但一个可疑的是,这是表“etaty”,它与其他两个表没有正确连接,所以
SELECT MAX(eW.pensja) AS mp FROM etaty eW
不符合:
AND mO.nazwa LIKE 'W%'
可能没有一个以W开头的人薪水最高
我认为您需要在selectmax(pensja)子查询中添加相同的条件
但是我可能错了,因为没有结构很难预测。你能提供一个样本数据集吗?你能提供一个样本数据集吗?如果有几个人有这种情况怎么办?@HenryHarutyunyan,那么整个查询可以在max子查询中重复。或者,我们可以使用解析函数。是的,我同意。这看起来更好如果有几个人有这种情况?@HenryHarutyunyan那么整个查询可以在max子查询中重复。或者,我们可以使用解析函数。是的,我同意。看起来好多了