tags:

views:

55

answers:

2

If I have a MySQL-table consisting of the fields one, two, three and four can I then somehow use the IF statement to receive the field four, only when a certain condition is true? Do I have to have two sets of SELECT statement?

Can I do (in pseudocode):

SELECT one, two, three
IF (1 == 1) THEN
four
ENDIF
FROM table

Or do I somehow have to do:

IF (1 == 1) THEN 
SELECT one, two, three, four
ENDIF
ELSE THEN
SELECT one, two, three
ENDIF

I'm just curious, I don't have a specific usage for this.

A: 

Although there is and IF statement you can use to an extend, you really need stored procedures for this kind of use case.

Maxwell Troy Milton King
+4  A: 

Use:

SELECT t.one,
       t.two,
       t.three,
       CASE WHEN 1 = 1 THEN t.four ELSE NULL END AS four
  FROM TABLE t

You can't have optional column(s) in the SELECT list - it either contains the column and an appropriate value, or no column at all.

You can have two (or more) statements separated by an IF statement, but it's not ideal to have an additional column in one of the statements because you are pushing decision logic into your application to handle the missing column situation.

OMG Ponies
Thanks--that was basically all I wanted to know.
Eikern