View Single Post
Old 07-24-2007, 10:54 AM   #3 (permalink)
ratbastid
Darth Papa
 
ratbastid's Avatar
 
Location: Yonder
The simple solution is to put a "LIMIT 1" on the end of that statement. You lose some efficiency, but you get exactly your results. I wouldn't put that anywhere it's liable to be run more than once a second, or anywhere transaction volume is high.

If you can do sub-selects, you can:
SELECT ... FROM ps_employment WHERE effdt = (SELECT MAX(effdt) FROM ps_employment);

That's the elegant solution. But not all databases (I'm looking at you, older versions of MySQL) support subselects.

Bear in mind that the sub-select option isn't guaranteed to get you just one record unless your effdt field is defined UNIQUE (or guaranteed unique in code).
ratbastid is offline  
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73