webForumDet fria alternativet

Hämta id vid SELECT COUNT(*)

7 svar · 285 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

När jag kör en SELECT COUNT(*) för att se om namnet är upptaget så vill jag ha reda på id nummret efteråt.
Kan man få det med någon liknande funktion som mysql_insert_id()?

aasahMedlem sedan mars 20034 471 inlägg
#2

Re: Hämta id vid SELECT COUNT(*)

Pedda skrev:

När jag kör en SELECT COUNT(*) för att se om namnet är upptaget så vill jag ha reda på id nummret efteråt.
Kan man få det med någon liknande funktion som mysql_insert_id()?

Va? :q

COUNT(*) kommer att räkna antalet rader du har i tabellen. Vad är det för idnummer du vill ha ut?

@ndersMedlem sedan juni 200032 969 inlägg
#3

Vad menar du för ID-nummer?

Menar du; om namnet redan existerar, returnera dess id-nummer?
I så fall är den enklaste lösningen att exekvera:

SELECT id FROM tabellen WHERE namnet='kalle'

Sedan kollar du om SQL-frågan returnerar någonting, då vet du vilket ID det gäller, annars returneras ingenting och det är fritt fram.

Som sagt, jag förstår dock inte riktigt vad du menar. :)

Mvh

PeddaMedlem sedan juni 20006 032 inlägg
#4

Förlåt om jag var lite otydlig. :r

COUNT(*) returner ju hur många rader som stämmer överens med frågan, då vill jag ha de radernas id alltså.

Tänkte om det fanns någon funktion att få det utan att köra SELECT efteråt, men det blir nog förmodligen till att göra det.

aasahMedlem sedan mars 20034 471 inlägg
#5

Pedda skrev:

... COUNT(*) returner ju hur många rader som stämmer överens med frågan, då vill jag ha de radernas id alltså.
...

Select id, count(*) From.....

kommer att ge de idnummer som stämmer med frågan samt ett tal som är lika för alla idnummer. Eftersom COUNT(*) ju är lika för alla rader.

Exempel:

T
id   tal
1    1
2    1
3     0
4    0
5    1

Select id, count(*) from T where tal = 1;  ger

id   #
1    3
2    3
5    3
LarsGMedlem sedan dec. 200012 464 inlägg
#6

Select id, count(*) From.....

Den sql-satsen kommer att orsaka ett fel.

select id, (select count(*) from t where tal = 1) 
from t
where tal = 1

ger det resultatet. Kräver dock 4.1 av Mysql.

insiktMedlem sedan okt. 200317 inlägg
#7

Om jag förstår frågan rätt, kan du använda group by (om du har äldre version av mysql).

select id, count(id) from tal group by id

]i[

aasahMedlem sedan mars 20034 471 inlägg
#8

LarsG skrev:

Den sql-satsen kommer att orsaka ett fel.....

Oj! :r Det hade inte jag klart för mig! Ursäkta! :r Jag såg det nu när jag testade...

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)