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()?
Hämta id vid SELECT COUNT(*)
7 svar · 285 visningar · startad av Pedda
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?
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
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.
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
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.
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[
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...