我正在尝试对我从数据库中提取的一些数据进行排序,并且我意识到最有效的方法是直接在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),即使position
和company
是{{1}}和{{1}},所有列也都有不同的值相同。
答案 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
没有联接。