问题描述:

I am trying to write a query that would select another row if the first one is not found ie grab a 'default' if it can't find the one specified.

Something similar to this:

SELECT

*

FROM

teams

WHERE

team=:team_id

ELSE

WHERE team=1

Is this possible to do in Mysql?

BTW the default could be anything not just 1.

网友答案:

supposing :team_id is greater than 1 you could do

select * from teams where team=1 or team=:team_id order by team desc limit 1

or if you don't know the order of both id :

select * from teams where team=1 or team=:team_id order by team=:team_id desc limit 1
网友答案:
SELECT * FROM teams WHERE team=:team_id
UNION ALL
SELECT * FROM teams WHERE team=1
ORDER BY team=1
LIMIT 1
网友答案:

Having looked at my question again I've thought maybe its easier to do then I originally thought.

Would the following not work?:

SELECT
*
FROM
teams
WHERE
team=:team OR (team!=:team AND team=:default_team)
相关阅读:
Top