"UPDATE table_name SET w = $1, x = $2, z = $4 WHERE y = $3 RETURNING *",

does not do the same as

"UPDATE table_name SET w = $1, x = $2, y = $3, z = $4 RETURNING *",

It’s 2 am and my mind blanked out the WHERE, and just wanted the numbers neatly in order of 1234.

idiot.

FML.

  • jjjalljs
    link
    fedilink
    arrow-up
    9
    ·
    9 months ago

    I get mildly mad all the time when writing SQL because I feel like it’s upside down

    Instead of

    select u.id. u.email, p.name
    from user u
    join persona p on p.user_id = u.id
    where u.active = true
    

    where the columns are referenced before they’re defined (like what is u.id? Keep reading to find out!)

    it should instead be

    from user u
    join persona p on u.id = p.user_id
    where u.active = true
    select u.id, u.email, p.name
    

    Now nothing is defined before it’s used, and you’re less likely to miss your where clause. I usually write the joins first anyway because I know what tables I care about, but don’t know which specific things I’ll want.

    I can’t think of any other languages that use things before they’re defined except extremely dysfunctional JavaScript.