【发布时间】:2013-03-23 09:35:55
【问题描述】:
我正在尝试编写一个查询,如果找不到第一个行,它将选择另一行,即如果找不到指定的行,则获取“默认”。
类似的东西:
SELECT
*
FROM
teams
WHERE
team=:team_id
ELSE
WHERE team=1
在Mysql中可以做到吗?
顺便说一句,默认值可能不仅仅是 1。
【问题讨论】:
我正在尝试编写一个查询,如果找不到第一个行,它将选择另一行,即如果找不到指定的行,则获取“默认”。
类似的东西:
SELECT
*
FROM
teams
WHERE
team=:team_id
ELSE
WHERE team=1
在Mysql中可以做到吗?
顺便说一句,默认值可能不仅仅是 1。
【问题讨论】:
假设:team_id 大于1 你可以这样做
select * from teams where team=1 or team=:team_id order by team desc limit 1
或者如果你不知道两个 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
【讨论】:
再次查看我的问题后,我认为它可能比我最初想的更容易。
以下方法不起作用吗?:
SELECT
*
FROM
teams
WHERE
team=:team OR (team!=:team AND team=:default_team)
【讨论】: