首页 > 解决方案 > 是否可以使用列值sql查询作为和条件

问题描述

是否可以在 mySQL 中使用带有 sql 条件的列值作为语句中的条件?

mySQL 表

|id|name  |valid_from         |valid_to|active|language|color|sub_condition|
|1 |test 1|2019-03-01 05:20:15|null    |1     |en      |red  |language='en'|
|2 |test 2|2019-03-01 05:20:15|null    |1     |de      |blue |color='blue' |

询问

SELECT *
FROM `table`
WHERE active = 1 AND
      valid_from <= NOW() AND
      sub_condition

sub_condition应该是表中的值。

我想要做的是在选定的行中定义更详细的条件,以更详细地过滤整个表。

谢谢

标签: mysqlsqlselect

解决方案


您不能使用列值作为 AND 条件来过滤结果,但可以使用列名作为 AND 条件来过滤结果。

SQL 查询会将 sub_condition 列名中的 language='en' 视为列值,否则不会。

您可以过滤结果的适当方式是这样的

例子;

$results = mysql_query("SELECT * FROM tableWHERE active=1 AND valid_from <= NOW() AND lang='eng'");


推荐阅读