MySQL选择尚未选择的位置

时间:2013-10-20 07:06:59

标签: mysql sql

我正在尝试对我从数据库中提取的一些数据进行排序,并且我意识到最有效的方法是直接在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   |

当position和company与之前选择的行相同时,我需要查询不选择行。这就是我一直陷入困境的地方。任何帮助将不胜感激,谢谢。

编辑:很抱歉混淆,我从数据库中选择了多个列(例如。year_start,year_end,linkedID,link),即使positioncompany是{{1}}和{{1}},所有列也都有不同的值相同。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

SELECT DISTINCT在此练习中应该可以正常工作,不需要使用MAX()在同一表上进行内部联接。

如果您想从列中获取最大值,则可以使用

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

没有联接。