在我的MySQL数据库中,我有一个具有以下结构的表features:
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| val | json | NO
我有几张桌子,至少26张...我正在尝试从所有表中选择一列,并将它们显示为一个列 我试过这个: (SELECT col1,col2,col3,col4
FROM table1
ORDER BY col1 DESC LIMIT 1)
UNION
(SELECT col1,col2,col3,col4
FROM table2
ORDER BY col1 DESC LIMIT 1) 这是有效的,但我必须复制和粘贴一堆次数,这取决于我有多少个表,这是不是很有效。请帮帮我--我刚刚开始学习mysql,并且我被困在试图修复这个问题上。
我想把mysql存储过程的结果放到其他存储过程中,并插入到临时表中。
示例:
存储过程%1的结果
ID NAME SEX
1 A M
2 B F
3 C M
存储过程2中的代码
CREATE TEMPORARY TABLE TBL1;
INSERT INTO TBL1 (call storeprocedure1('));
如何将存储过程1中的所有数据插入到存储的procedure2中的临时表中?
我使用pyodbc从MSSQL数据库中拉取数据,pyodbc以列表的形式返回我的数据集。然后需要将该数据传输到MySQL数据库中。我用MySQL编写了以下存储过程。
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_int_pmt`(
IN pmtamt DECIMAL(16,10),
IN pmtdt DATETIME,
IN propmtref VARCHAR(128),
IN rtdinv_id INT(11)
)
BEGIN
INSERT INTO ay_financi
我想返回一个在存储过程中动态创建的集合(为了简单起见,假设该集合是一个在循环中计算的偶数列表)。
我使用过的一些数据库有一个SUSPEND操作,该操作将OUT参数的当前值添加到过程的结果集,如下所示:
DELIMITER $
CREATE PROCEDURE EvenNumbers(
IN n INT, OUT NUM INT )
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET NUM = i;
SUSPEND; /* adds a row with a value 'i
我想写一个以整数为输入的mysql函数,该函数执行select语句"select id from table_name“,然后我希望该函数返回select语句的结果。
然后
在查询中,我想做一些类似的事情:
select id,name from table_name where id in (call function here that returns a list of ids)。
这在mysql中有效吗??
提前感谢
我认为对此的简短回答是否定的,但是是否有可能通过类似于数据库中不支持CTE的表函数来模拟递归的CTE呢?例如:
-- get weekday names -- 'Monday', 'Tuesday', ...
WITH cte_numbers(n, weekday) AS (
SELECT
0,
DATENAME(DW, 0)
UNION ALL
SELECT
n + 1,
DATENAME(DW, n + 1)
FROM
cte
我想用一些数据集创建临时表,以便对mysql DB执行更复杂的查询。
我认为有两种可能的方法。
创建表格并插入每一行:
create temporary table dates (
date date not null
);
insert into dates values ('2010-01-01');
insert into dates values ('2010-02-01');
insert into dates values ('2010-03-01');
或创建内建表:
select *
from (
? 当我在MySQL工作台的新查询编辑器窗口中编写基于条件选择表的if else条件时,会出现错误 这里(1=1)是一些条件 IF (1=1) then
select 1;
ELSE
select 2;
END IF;
IF (1=1) then
select 1;
ELSE
select 2;
END IF; 错误代码: 1064。您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解要在第1行的'IF (1=1) then select 1‘附近使用的正确语法。
问题是:我有一个集合A:(1,2,3,4,5)和一个mysql表B,它看起来像:
| id |
1
2
3
6
7
我想要的是选择A中所有不在表B's id字段中的元素,结果应该是(4,5)。
我已经尝试过select * from B where id not in (1,2,3,4,5),很明显,结果是(6,7)。
我只是无法通过如何实现我想做的事情来完成它。有人能给我点主意吗?非常感谢!
如何在一个查询中完成以下查询,并以下面的方式获得结果?
// Begining of January
$ob = mysql_query(" SELECT SUM(salary_amount) AS total FROM teacherexpense WHERE month(disburse_date)='01' AND year(disburse_date)='$year' ");
$nt = mysql_fetch_assoc($ob);
$salaryamount= $nt['total'];
$ob = mysq
我正在使用一个遗留软件,由于各种原因,我不能使用数据库模式。我有一个带有ID列的数据库,它充当主键和排序子句("ORDER BY ID")。我需要一种方法来“重新排序”我的列表。
例如,如果我有:
ID | Data...
------------
1 | A
10 | B
17 | C
18 | D
给定ID,将记录“向上”或“向下”移动的最佳方式是什么。因此:C -> "up“会将C的ID更改为A和B之间;依此类推。
一切都在MySQL中,如果这有帮助的话。
我们非常感谢您的任何建议。
我有10张表,里面有很多记录。所有的表都有"Date“列。我想从表中提取日期的所有数据。我可以做10个查询SELECT * FROM Table1 WHERE Date=dd/MM/yyyy,ect...but我只想做一个带有“多选”的查询。我该怎么做呢?我对SQL语言不是很熟练。
编辑:我正在使用Microsoft Access和MySQL (用于两个不同的桌面应用程序,但问题相同)。表有不同的字段(只是日期都是相同的),所以UNION的用法不好。
我需要在MySQL查询中添加if/else语句,但无法使其工作。
下面是我想要实现的伪代码示例。
SELECT *
FROM calendar
WHERE calendar.alert = 1
IF calendar.repeat = 0 THEN HAVING calendar.UTC_1 > UNIX_TIMESTAMP();
ELSE "get all records regardless of calendar.repeat value";
END IF;
有什么建议可以实现这一点吗?否则,我找不到此MySQL的正确语法。
感谢您的帮助!
SELECT var1,var2,var3,table_name
FROM table1 LEFT JOIN table_name on var3=table_name.id
这意味着我希望动态地离开join表,这取决于来自table1的var3的值,因为var3是从那里提取的。
但是,上述查询的结果是
表table_name不存在
我的mysql限制错误?
下面的查询在mysql上运行
SELECT DATE(field) AS day, COUNT( * ) AS totalSessions
FROM table
GROUP BY DATE(field)
ORDER BY field DESC
LIMIT 7
它回来了
day | totalSessions
2013-12-17 | 5
2013-12-15 | 1
为了得到结果,我需要在查询中更改什么?
day | totalSessions
2013-12-17 | 5
2013-12-16 | 0
2013-12-15 | 1
2013
set @var=1;
if @var>1 then
select * from client;
else
select * from otherTable;
end if;
这是我的mysql查询。你们能指出为什么会出现错误吗?这真的把我的脑子都吃了。
显示的错误是
IF @var >1 THEN SELECT *
FROM client;
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL
如果我有一个没有表的MySQL数据库。是否有一条SQL语句可以返回如下结果:
+------------+
| date |
+------------+
| 2017-06-01 |
| 2017-06-02 |
| 2017-06-03 |
| 2017-06-04 |
etc.... to any end date I want
+------------+
我想要这样的原因是因为我希望能够动态地生成一个这样的表,以帮助我在不同的数据库中进行一些查询。
这是一个非常基本的MySQL问题,但我找不到答案。假设下面的storedprocedure主体;
DECLARE Existing INT DEFAULT 0;
SELECT SQL_CALC_FOUND_ROWS name FROM users WHERE id = pid LIMIT 1;
SELECT FOUND_ROWS() INTO Existing;
Select Existing;
当我运行它时,它总是返回第一个SELECT结果。但是,我希望它返回最后一个(选择现有的)结果。这种行为正常吗?如果是这样,我如何更改它,因为第一个select只是为了检查,而最后一个是我需要的。
(真
我有以下问题
我有一个存储过程,它执行一些复杂的处理,最终需要选择不同的行。
就像这样
Create Procedure MyProc
@par1 as nvarchar(50)
As
select fld1, fld2 into #tmpTable from Table1
union
select fld1, fld2 from Table2
union
select fld1, fld2 from Table3
-- select result
select distinct fld1, fld2 from #tmpTabl