是否可以将列值sql查询用作和条件

时间:2019-03-02 19:03:14

标签: mysql sql select

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

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 应该是表中的值。

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

谢谢

4 个答案:

答案 0 :(得分:0)

是的,有可能。
但这取决于您要寻找的东西。

例如,您可以LIKE
而且单引号可以用反斜杠转义。

SELECT * FROM `table` 
WHERE active=1 
  AND valid_from <= NOW()
  AND sub_condition LIKE '%language=\'en\'%'

答案 1 :(得分:0)

您必须使用别名。

SELECT * FROM table t WHERE t.active=1 AND t.valid_from <= NOW() AND (select * from table where (sub_condition))

还有子条件。

答案 2 :(得分:0)

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

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

过滤结果的合适方法如下

示例;

$ results = mysql_query(“ SELECT * FROM table WHERE active = 1 AND valid_from <= NOW()AND lang ='eng'”);

答案 3 :(得分:0)

我想你是在问:

  

我可以在SQL中做类似eval()的操作来评估存储在数据中的表达式吗?

不,您不能。在准备查询之前,所有查询的语法(例如表达式,表名和列名)都必须是明确的和固定的。查询在执行期间读取的数据值不能更改查询的逻辑。

您可以读取数据,然后根据您的应用解释数据的方式,使用该逻辑运行 second SQL查询。但是您不能有一个查询能够在同一查询期间读取数据并执行逻辑。