簡體   English   中英

MySQL條件取決於列值

[英]MySQL condition depending on column value

因此,我的表中或多或少具有以下列結構:

Name     Age   Operator
----     ---   --------
Jhon      35      >
Michael   30      =
Jess      27      <

基於此,我想進行這樣的查詢

SELECT * FROM mytable WHERE Name = 'John' AND Age > 40

顯然,這將不會返回任何結果,這很好,但是我的問題是我想使用Jhon的“ Operator”值(在本例中為>)來創建該條件。

可能嗎?

謝謝!

您還可以使用MySQL的PREPAREEXECUTE語句來創建動態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;

參見演示https://www.db-fiddle.com/f/3Z59Lxaoy1ZXC4kdNCtpsr/1

您可以像這樣簡單地做到這一點:

SELECT
*
FROM Table1
WHERE Name = 'Jhon'AND CASE 
WHEN Operator = '>' THEN Age > 10
WHEN Operator = '<' THEN Age < 10
WHEN Operator = '=' THEN Age = 10
END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM