【发布时间】:2021-01-13 18:01:20
【问题描述】:
这是我的小提琴https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=5f93901f015e087fb1f8466b7601e0b0
我有 3 张这样的桌子
CREATE TABLE table1
(
ID int PRIMARY KEY NOT NULL,
endDate datetime
);
INSERT INTO table1 (ID, endDate)
VALUES (1, '2020-02-02');
CREATE TABLE table2
(
ID int PRIMARY KEY NOT NULL,
end_date datetime
);
INSERT INTO table2 (ID, end_date)
VALUES (1, '2020-03-02');
CREATE TABLE table3
(
ID int PRIMARY KEY NOT NULL,
EndDate datetime
);
INSERT INTO table3 (ID, EndDate)
VALUES (1, '2019-02-02');
基本上我想在我的数据库中找出所有名称包含此查询的“end”的列
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE 'End%';
结果是这样的:
+----------------------------------+--------------+
| TABLE_NAME | COLUMN_NAME |
+----------------------------------+--------------+
| EVENTS | ENDS |
| table1 | endDate |
| table2 | end_date |
| table3 | EndDate |
| events_stages_current | END_EVENT_ID |
| events_stages_history | END_EVENT_ID |
| events_stages_history_long | END_EVENT_ID |
| events_statements_current | END_EVENT_ID |
| events_statements_history | END_EVENT_ID |
| events_statements_history_long | END_EVENT_ID |
| events_transactions_current | END_EVENT_ID |
| events_transactions_history | END_EVENT_ID |
| events_transactions_history_long | END_EVENT_ID |
| events_waits_current | END_EVENT_ID |
| events_waits_history | END_EVENT_ID |
| events_waits_history_long | END_EVENT_ID |
+----------------------------------+--------------+
由于在我的数据库中所有名称为“end”的列都是日期时间数据类型,所以我想找出一条记录,年份 = 2020 作为行,所以根据我的小提琴,预期的结果是这样的
预期结果
+------------+--------------+---------------------+
| TABLE_NAME | COLUMNS_NAME | DATA |
+------------+--------------+---------------------+
| table1 | endDate | 2020-02-02 00:00:00 |
| table2 | end_date | 2020-03-02 00:00:00 |
+------------+--------------+---------------------+
不包括来自table3的数据,因为该数据存在于2019而不是2020的年份
【问题讨论】:
-
你需要用
PREPARE和EXECUTE编写一个执行动态SQL的存储过程。 -
对不起,我只是不知道如何解决这个问题。请你给我一个关于使用准备和执行动态存储过程的线索
标签: mysql