1

我正在尝试对从数据库中提取的一些数据进行排序,我意识到最有效的方法是直接在 SQL 查询中而不是在 PHP 或 javascript 中进行。我有一个具有以下架构的数据库:

Table_1
position | company | etc.
  CEO    |   ABC   |
  CEO    |   CBA   |
  CEO    |   CBA   |
 Intern  |   XYZ   |
  CFO    |   MNO   |
  CFO    |   MNO   |
  CFO    |   MNO   |

我目前只是提取所有数据,将其转换为 JSON 并将其发送到浏览器并让浏览器完成所有组织等,但更有效的方法是只选择没有的行之前被选中。因此,它不会像上面那样加载所有数据,而只会从数据库中加载:

Table_1
position | company | etc.
  CEO    |   ABC   |
  CEO    |   CBA   |
 Intern  |   XYZ   |
  CFO    |   MNO   |

当职位和公司与先前选择的行相同时,我需要查询不选择行。这就是我一直卡住的地方。任何帮助将不胜感激,谢谢。

编辑:抱歉造成混淆,我从数据库中选择多个列(例如 year_start、year_end、linkedID、link),即使它们相同,它们也可以具有不同position的值company

4

2 回答 2

3

用于DISTINCT仅获取唯一值。

SELECT DISTINCT position, company
FROM tableName

更新

SELECT  a.*
FROM    tableName
        INNER JOIN
        (
            SELECT  position, company, MAX(year_start) year_start
            FROM    tableName
            GROUP   BY position, company
        ) b ON  a.position = b.position AND 
                a.company = b.company AND
                a.year_start = b.year_start

如果您有一个 auto_incremented 列,最好使用它而不是year_start.

于 2013-10-20T07:08:02.730 回答
0

SELECT DISTINCT对于本练习的目的应该可以正常工作,不需要在同一个表上使用 MAX() 进行内部连接。

如果您想要列中的最大值,您绝对可以使用

SELECT DISTINCT A.bla,
                MAX(A.bla2) as bla2
FROM table
GROUP BY A.bla

没有连接。

于 2020-11-10T16:31:46.797 回答