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