MySQL条件取决于列值
因此,我的表中或多或少有这样的列结构:MySQL条件取决于列值,mysql,Mysql,因此,我的表中或多或少有这样的列结构: Name Age Operator ---- --- -------- Jhon 35 > Michael 30 = Jess 27 < 很明显,这不会返回任何结果,这很好,但我的问题是我想使用Jhon的“运算符”值(>在本例中)来生成该条件 可能吗 谢谢大家! 您还可以使用MySQL的PREPARE和EXECUTE语句来生成动态SQL SET @name = 'J
Name Age Operator
---- --- --------
Jhon 35 >
Michael 30 =
Jess 27 <
很明显,这不会返回任何结果,这很好,但我的问题是我想使用Jhon的“运算符”值(>在本例中)来生成该条件
可能吗
谢谢大家! 您还可以使用MySQL的
PREPARE
和EXECUTE
语句来生成动态SQL
SET @name = 'Jhon';
SET @operator = NULL;
SET @age = 10;
SELECT
Operator
INTO
@operator
FROM
Table1
WHERE
Name = @name;
SET @SQL = CONCAT(
"SELECT"
, " * "
, " FROM "
, " Table1 "
, " WHERE "
, " name = '", @name, "' AND age ", @operator, ' ' , @age
);
SELECT @SQL; # not needed but you can see the generated SQL code which will be executed
PREPARE s FROM @SQL;
EXECUTE s;
请参见演示您可以这样做:
SELECT
*
FROM Table1
WHERE Name = 'Jhon'AND CASE
WHEN Operator = '>' THEN Age > 10
WHEN Operator = '<' THEN Age < 10
WHEN Operator = '=' THEN Age = 10
END
选择
*
来自表1
其中Name='Jhon'和CASE
当运算符=“>”时,则年龄>10
WHEN Operator='是的,当它可能很复杂时,为什么容易;)我的意思是,您应该提到,对于您的方法,需要一个存储过程。“您应该提到,对于您的方法,需要一个存储过程。”不需要存储过程。。使用存储过程将使调用此函数更容易使用@fancyPants。。“是的,当它可能很复杂的时候,为什么这么简单;)”唯一可能的方法是在SQLL中不使用“硬编码”操作符。我认为这是可行的。我必须做更多的测试才能在我的实际表格中使用它。我也会试试@raymond nijlandsuggestion@RaymondNijland这并不是说有几百个;-)
SELECT
*
FROM Table1
WHERE Name = 'Jhon'AND CASE
WHEN Operator = '>' THEN Age > 10
WHEN Operator = '<' THEN Age < 10
WHEN Operator = '=' THEN Age = 10
END