我正在寻找一种解决方案来创建一个单独的文本 block (由某些条件组成),我可以只创建一次并稍后在查询中引用它:
例子:
Re-usable text-block (A1, B1, C1, D1 and G1 are actual column names):
-------------
WHERE
A1 > B1 and
B1 < C1 and
D1 > G1
-------------
这里是 SELECT 命令:
SELECT * FROM table 1
---- insert reference to the re-usable text block ---
UNION
SELECT * FROM table 2
---- insert reference to the re-usable text block ---
UNION
SELECT * FROM table 3
---- insert reference to the re-usable text block ---
;
我在 Select 语句之间使用 UNION 命令,因为我有 30 多个表,我需要从中获取与此可重用文本 block 中定义的完全相同标准相对应的数据。如果我需要进行更改,它将仅适用于这个可重复使用的文本 block 。
我该如何设计才能使我只需要在一个地方进行更改,而不是对每个查询进行一次更改?
最佳答案
这里您需要一个 Prepared Statement 来解决您的问题。 .
这允许您创建一个要运行多次的查询,同时仅更改一些最小的内容,例如列条件。
在你的例子中,如果你想要一个参数化的 where 子句,你可以这样做:
PREPARE stmnt FROM 'SELECT myColumns FROM myTable WHERE ?';
然后,您可以在 where 子句中设置一个变量来匹配您想要的内容,并使用 USING 关键字执行语句:
SET @condition = 'a1 < b1';
EXECUTE stmnt USING @condition;
注意准备语句中 ?
的使用。这是参数所在位置的占位符。如果您有多个问号,您将需要在 USING
之后有多个参数,它们会按照您编写的顺序替换问号。
关于mysql - 在查询中包含可重复使用的文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768984/