Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-选择最高工资_Mysql - Fatal编程技术网

MySQL-选择最高工资

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

我需要选择一个住在城市的人,这个城市的名字以“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 = (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子查询中重复。或者,我们可以使用解析函数。是的,我同意。看起来好多了