我想获得一个计数值成成变量的值与另一个查询使用。使用查询,以确定一个变量(MySQL的)
但这是行不通的,它说:
[错误] 1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本的手册正确的语法以线附近使用“WHERE tabid = 4 SELECT COUNT(列名)FROM场” 1
我使用的查询是:
SET @_count = SELECT COUNT(columnname) FROM field WHERE tabid = 4;
我想获得一个计数值成成变量的值与另一个查询使用。使用查询,以确定一个变量(MySQL的)
但这是行不通的,它说:
[错误] 1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本的手册正确的语法以线附近使用“WHERE tabid = 4 SELECT COUNT(列名)FROM场” 1
我使用的查询是:
SET @_count = SELECT COUNT(columnname) FROM field WHERE tabid = 4;
你将需要包装的SQL SELECT查询在括号中。
SET @_count = (SELECT COUNT(columnname) FROM field WHERE tabid = 4);
那作品,但没有在...之前 - 欢迎马上被接受 –
SELECT COUNT(*) into @_count from field WHERE tabid = 4;
select @_count;
的结果
做到了,这是怎么了:
/**
* Query to find and select all the fields with a specific name on any tab id
*/
-- Prepare the variables for the query
SET @_tabid = 4; -- Replace with your tab id
SET @_lowerletter = "%%"; -- Replace with your lower case search
SET @_upperletter = "%%"; -- Replace with your upper case search
SET @_upperlimit = (SELECT COUNT(columnname) FROM field WHERE tabid = @_tabid);
SET @_lowerlimit = 0; -- Set your lower limit
SET @_query = "SELECT * FROM field
WHERE tabid = ?
AND (
(columnname LIKE ? OR columnname LIKE ?) OR
(fieldname LIKE ? OR fieldname LIKE ?) OR
(fieldlabel LIKE ? OR fieldlabel LIKE ?)
)
ORDER BY tabid, fieldid ASC
LIMIT ?, ?;";
-- //Prepare
-- Prepare and execute query
PREPARE stmt FROM @_query;
EXECUTE stmt USING
@_tabid,
@_lowerletter, @_upperletter, -- Upper and lower search terms
@_lowerletter, @_upperletter, -- Upper and lower search terms
@_lowerletter, @_upperletter, -- Upper and lower search terms
@_lowerlimit, @_upperlimit; -- Upper and lower limits
DEALLOCATE PREPARE stmt;
-- // Execute
是'field'一列或表?它应该是一张桌子。 – Zach
字段是表 - 即使backticked它不工作 –
为什么不使用你使用任何服务器端语言和读取查询并将其存储在一个变量,例如PHP语言。然后在获得第一个结果后再完成另一个sql查询? – Zach