본래 신라의 일선군(一善郡)이었는데, 614년(진평왕 36)에 사벌(沙伐 : 지금의 경상북도 尙州)과 감문(甘文 : 지금의 경상북도 김천시 개령면)에 있던 상주(上州)의 주치소(州治所)가 이곳으로 이동해 오면서 일선주(一善州)로 개편되었다.
삼국통일 후인 687년(신문왕 7) 상주(上州)가 사벌주로 옮겨갔고, 757년(경덕왕 16)에 숭선군(嵩善郡)으로 개칭되어 군위현(軍威縣) · 효령현(孝靈縣) · 이동혜현(爾同兮縣)을 속현으로 하였다. 고려 시대 995년(성종 14)에는 선주(善州)로 개편되어 자사(刺史)가 임명되었다가 1018년(현종 9) 상주의 속현이 되었다.
1143년(인종 21)에는 일선현으로 현령(縣令)이 임명되어 주현(主縣)으로 승격됨과 동시에 해평군 · 군위현 · 효령현 · 부계현을 속현으로 거느리다가 지선주사(知善州事)로 승격되었다. 조선 건국 뒤 1413년(태종 13) 지방제도 개편시 선산군으로 개칭되었고, 2년 뒤에는 주민이 1,000호 이상이 되어 도호부로 승격되었다.
갑오개혁 직후인 1895년에 소지역주의가 채택되어 23부제가 실시되자, 이곳은 군이 되어 대구부에 속하였다가 다음 해에 13도제의 실시에 따라 3등군으로서 경상북도 선산군이 되었다. 현대에 이르러 선산군은 많은 변동이 있었다.
1963년 구미면이 구미읍으로 승격된 이후 인접군과 행정 관할 구역의 조정이 있었다. 1978년에는 구미읍이 시로 승격, 분리되었으며 1979년에는 선산면이 승격되었다.
1988년 당시 선산군의 면적은 484.39㎢, 인구는 6만 6317명이었으며, 1개 면 97개 이가 있었으며, 군청 소재지는 선산읍 동부리이었다. 선산군은 1995년 1월 1일 행정구역 통폐합에 따라 당시 인구는 약 6만 4000명으로 구미시와 통합되어 새로운 오늘날의 구미시가 되었다. 지금은 선산읍이라는 행정지명이 있다.