[英]Can I use two where clauses, like “SELECT * FROM table WHERE something and something”?
[英]Can I use the query input parameter to have different where condiction? (something like an IF statment)
我不太喜欢SQL,但在MySql查询上有以下问题。 我试图向您解释我该怎么做。
我有此查询,它工作正常:
SELECT
LNG.id AS language_id,
LNG.language_name AS language_name,
LNG.language_code AS language_code,
CLP.is_default AS id_default_language
FROM Country_Language_Preference AS CLP
INNER JOIN Country AS CNT
ON CLP.country_id = CNT.id
INNER JOIN Languages AS LNG
ON CLP.language_id = LNG.id
WHERE
CNT.country_name = "Senegal"
该查询具有单个WHERE输入参数,这是:
CNT.country_name = "Senegal"
我要实现以下行为:如果传递的参数具有值塞内加尔或卢旺达,则执行上一个查询。
如果此输入参数的值形式不同,那么塞内加尔或卢旺达将执行相同的查询,但要使用此WHERE condition_
CNT.country_name = "GLOBAL"
我可以使用SQL做类似的事情吗?
使用CASE
语句,这应该是可能的。
尝试这个:
SELECT
LNG.id AS language_id,
LNG.language_name AS language_name,
LNG.language_code AS language_code,
CLP.is_default AS id_default_language
FROM Country_Language_Preference AS CLP
INNER JOIN Country AS CNT
ON CLP.country_id = CNT.id
INNER JOIN Languages AS LNG
ON CLP.language_id = LNG.id
WHERE
CNT.country_name = CASE WHEN @Country = "Senegal" OR @Country = "Rwanda" THEN "Senegal"
ELSE "GLOBAL" END
只需使用OR
:
WHERE (CNT.country_name = @country OR @country = 'GLOBAL')
@country
是您要传入的任何参数。
如果要限制在这两个国家/地区,则:
WHERE (CNT.country_name = @country OR
(@country NOT IN ('Rwanda', 'Senegal') AND CNT.country_name = 'GLOBAL')
)
但是第一个版本似乎更通用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.