在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 应该是表中的值。
我要做的是在选定的行中定义更多详细信息条件,以更详细地过滤整个表格。
谢谢
答案 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查询。但是您不能有一个查询能够在同一查询期间读取数据并执行逻辑。