我有一个名为financial_trans的表,它由id (AI,INT) acadYear (VARCHAR) //可能是'2020-2021‘组成。
现在,我希望使用group对类似的acadYear进行计数,并将其存储到mysql变量中,我的查询是
SELECT s.total as total
INTO @year
FROM (
SELECT COUNT(acadYear) as total
FROM financial_trans
GROUP BY acadYear
) s
但是像下面这样抛出一个错误,
#1172 -结果包括多行
MySQL如何插入具有SELECT子查询返回多行的表?
INSERT INTO Results
(
People,
names,
)
VALUES
(
(
SELECT d.id
FROM Names f
JOIN People d ON d.id = f.id
),
(
"Henry"
),
);
我希望用这个子查询返回的所有结果填充新表。如何在没有获得错误1242 (21000)的情况下做到这一点:子查询返回超过1
SELECT name from SUPPLIER
WHERE code =
(SELECT code FROM STOCK GROUP BY code HAVING COUNT(DISTINCT code)>=3);
我正在使用SQLPLUS。当查询返回一个结果时,我得到了我想要的答案。但是,当它返回多行时,我会得到以下错误消息:
ORA-01427:单行子查询返回多行。
SELECT
c.cy_id AS cy_id,
(SELECT
c.to_id
FROM c
WHERE (c.to_id = se.ar))AS tsn,
(SELECT
se.x
FROM se
WHERE (c.to_id = se.ar)) AS X,
(SELECT
se.y
FROM se
WHERE (c.to_id = se.ar)) AS y
FROM (c
JOIN se)
WHERE (c.to_id = se.ar)
当我在mysql中执行这个查询时,错误子查询会返回多行。但是,
是否有优化以下查询的方法?
SELECT count(*)>1000 FROM table_with_lot_of_rows WHERE condition_on_index;
使用此查询,MySQL首先执行count(*),然后执行比较。当只有少数行满足条件时,这是快速的,但如果很多行满足条件,则可能要花费很长时间。是否有办法在找到1000项后立即停止计数,而不是检查所有的结果?
特别是,我对带有全文条件的MyISAM表感兴趣,但是对于InnoDB和/或basic WHERE子句的任何回答都会有所帮助。
在我之前的问题中,我问到了如何将查询结果存储在变量中……现在我意识到查询可以返回多行。
我目前有这个:
SELECT @UserId = UserId FROM aspnet_Users WHERE UserName = @username
我想做这样的事情:
DELETE FROM some_table WHERE UserId IN ( *the ID list* )
DELETE FROM some_table_2 WHERE UserId IN ( *the ID list* )
我的第一反应是使用"GROUP_CONCAT“,但显然这是MySQL独有的特性。有一些方法可以实现
这是我的疑问:
SELECT * FROM img_ref WHERE id_img = (SELECT `id_img` FROM img_ref WHERE `id_user`=4)
我试图从img_ref中选择id_img = id_img附加到特定id_user的记录。
但是,子查询包含多个行/结果,因此引发错误"Subquery返回多行“。我如何修改这个语句,使"WHERE id_img=“部件和子查询允许多行?
谢谢你提前帮忙。
我有一个mysql查询,需要几分钟的时间,这不是很好,因为它是用来创建网页的。
使用了三个表: poster_data包含有关单个海报的信息。poster_categories列出了所有类别(电影、艺术等),而poster_prodcat列出了海报编号和它可以在的类别,例如,一个海报可能有多行,比如电影、印第安纳·琼斯、哈里森·福特、冒险片等。
这是一个缓慢的查询:
select *
from poster_prodcat,
poster_data,
poster_categories
where poster_data.apnumber = post
我在MySQL查询中遇到了一个奇怪的问题。下面的查询将返回0结果,而应该返回许多行。查询是
SELECT DISTINCT SKU, EAN, URL, CID
FROM tab_comp_data
WHERE status =''
在许多行中,STATUS列中都有空值,但它不返回任何行。
我试过其他方法了。
SELECT DISTINCT SKU, EAN, URL, CID
FROM tab_comp_data
WHERE status <>'INACT'
这也不返回任何行。
状态列只能是NULL或'INACT'
下面的查询应该返回多行多列数据库中的数据,而不需要使用mysql中的过程。
我的代码:
SELECT CASE WHEN @country_count < 8 THEN
(SELECT * FROM country where country_id =1)
ELSE
(SELECT * FROM country where country_id > 1)
END;
我在MySQL中有一个包含以下条目的employee表。我需要找到所有工资第二高的员工。在这种情况下,它将是c和d。
id | name | salary
1 | a | 1000
2 | b | 1000
3 | c | 500
4 | d | 500
5 | e | 400
我试着在查询下面运行
SELECT name, MAX(salary) FROM employee WHERE salary < (SELECT MAX(salary) from employee);
但是这个查询结果只返回c。如何同时得到c和d的结果?我看了一堆类似
我从不同的表中选择了一些行--逻辑是这样的:我只想返回总共10个结果,我首先尝试table_a,如果不能从table_a中获取10行,则从从table_b获取的结果中填充其余的行
伪查询
select value from table_a limit 10
union # ONLY IF COULD NOT FETCH 10 values from table_a
(select value from table_b limit 10)
limit 10
在mysql中这样的事情可能发生吗?如果是的话,怎么可能呢?
一些简单的测试用例
测试用例1: --如果我可以从表中
我有一个文本文件,其中包含需要在MySQL中查询的值列表。如果查询的结果返回1行或更多行,则需要从文件中删除该行。我将运行查询,直到文件为空。
# cat file.txt
bob
susan
jeff
mary
# cat script.py
f = open('file.txt')
for line in f:
# mysql query to get 'query_result'
if query_result == 1:
# do some work
# proceed to delete the val
我成功地创建了一个查询,它过滤了table1中的许多行,只过滤了那些需要更新的行。现在,我需要更新table1上的一些值,但只更新那些在我的子查询的过滤结果上的值。到目前为止,我已经尝试了以下几点:
update table1 set value1=some_value, value2=some_value where exists (subquery);
这样,我想更新子查询结果上存在的所有table1行。而是更新的所有table1行。有什么帮助吗?
给定一个由多行MySQL查询组成的文件,例如
SELECT foo, bar, etc
FROM blah
WHERE something or other
LIMIT etc
有没有什么方法可以在Vim中以可视方式选择查询,通过MySQL传输它,并在新的缓冲区中查看查询和结果?
说明:我不需要表格形式的输出,但是可以在vim中进一步处理或者导入到电子表格中(就像从mysql --batch得到的制表符分隔的输出) (Ubuntu Linux)。
因此,在MySQL中,我读到对于有很多行的大型表,使用ORDER BY RAND()不是一个好主意(即使大约有500个行表也是如此)。速度慢,效率低。很多行扫描。
这(下面)看起来是一种替代方案吗?
SELECT * FROM (通常返回少于20行的...subquery...)ORDER BY RAND()限制8
我会选择一个较小的子集,而不是对大量数据使用RAND(),只有这样,我才会对返回的行应用RAND()。在99.9%的情况下,上面看到的子查询选择的行数应该少于20行(实际上,它通常少于8行)。
好奇地想听听人们的想法。
(仅供参考,我正在用PHP做我的MySQL工作。)
谢谢!
我使用子查询的结果将多行插入到表中: INSERT INTO `doc-file` (docId, fileId) VALUES
((SELECT id FROM documents WHERE slug = :slug LIMIT 1), :file1),
((SELECT id FROM documents WHERE slug = :slug LIMIT 1), :file2),
((SELECT id FROM documents WHERE slug = :slug LIMIT 1), :file3), 子查询的结果对于我想要插入的每一行都是相同的,因此它实
我有下面的查询,它应该可以工作。但是,MySQL给我的错误消息是‘子查询返回多行’。
select e.episode_pk,
(select group_concat(d.fulldescription separator ', ')
from episode_rhythm er join diagnosis d on er.diagnosis_fk = d.diagnosis_pk
WHERE er.episode_fk = e.episode_pk group by d.fulldescription) as rhythmDesc
from episo
我有一个查询,它从一个名为“customers”的表中返回每个CustomerID的最新日期时间。表中有许多不同的CustomerID条目,有许多行具有相同的CustomerID,但具有不同的日期时间条目。我一直在使用下面的查询,该查询为每个唯一的CustomerID返回一行,并返回该CustomerID的最新(最大)日期。这个表大约有6000行。
顾客桌:
CustLogID (Primary key, INT 11)
CustomerID (INT 11)
DateTime (DATETIME)
查询:
SELECT
CustomerID AS custid,
DateTime AS la
我正在尝试将MS Access查询转换为MySQL,问题是将MS Access top转换为MySQL limit以获得相同的结果。当我将查询更改为limit时,会发现此版本的MySQL在子查询中不支持limit。
这是MS Access查询:
SELECT a.FK_CONTRIBUTOR_ID
FROM tPUBLISHERS
INNER JOIN (tCONTRIBUTORS AS b
INNER JOIN tCLIPS AS a ON b.CONTRIBUTOR_ID = a.FK_CONTRIBUTOR_ID)
ON tPUBLISHERS.PUBLISHER
是否可以在MySQL中将子查询结果的多个行转换为字符串?
我的意思是以下查询:
SELECT id,
FUNCTION_THAT_CONVERTS_MUTLIPLE_ROWS_TO_STRING(
SELECT name FROM test2 t2 where t2.id = t.id
) FROM test t;
其中SELECT name FROM test2 t2 where t2.id = t.id返回多行。
我想执行一个从table1获取链接的MySQL查询,并检查这个链接在table2和table3中是否存在。
现在我正在做2个查询,但我想将2个查询合并为1,并保证返回10个结果?(第一次之后,目前mysql_num_rows($rez)>0,返回结果小于10)
谢谢。
$result = mysql_query("SELECT id,link FROM table1 WHERE Order By id DESC LIMIT 0,10");
while ($row = mysql_fetch_array($result)){
$rez = mysql_query(
我目前正在使用以下内容更新我的表:
UPDATE Check_Dictionary
SET InDict = "No" WHERE (Leagues, Matches, Line) IN (SELECT * FROM (
SELECT Leagues, Matches, Line FROM Check_Dictionary
WHERE InDict = "No")as X)
但是,当我拥有大型数据集(40k+行)时,这似乎相当低效/缓慢。我正在进行的所有搜索都表明,与子
假设我有一个只有两列的表:名字和心情。一行包含一个人的名字,如果他们有多个情绪,那么多行存储在DB中。
例如,在数据库中有John,他很高兴,很兴奋,很自豪。
这表示为
John Happy
John Excited
John Proud
我想要做的是根据几种心情来选择名字。类似于联盟:
SELECT name WHERE mood=Happy
UNION
SELECT name WHERE mood=Excited
UNION
SELECT name WHERE mood=Proud
然而,使用上述联盟将导致:
John
John
John
Union all将导致John的一个结果,但它也
我正在尝试使用此查询删除链接服务器的数据库中已经存在的行:
GO
USE TAMSTest
GO
DELETE from [dbo].[Hour]
WHERE [dbo].[Hour].[InHour] = (SELECT [InHour]
FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour])
GO
当链接服务器的表中只有一行时,SELECT [InHour] FROM [TDG-MBL-005].[TAMSTEST].[dbo].[Hour]将返回该单行,删除操作将按预期进行。但是,对于
Server有一个名为的方便运算符,它返回
在有限的结果集中与最后位置相匹配的两个或更多行
例如,来自{10、9、8、8、2}的TOP 3 WITH TIES将返回{10、9、8、8}。
对于TOP N WITH TIES和MongoDB是否有一个单一的查询等价?
我不能使用两个查询(第二个查询搜索第一个查询返回的最小值),因为我在一个中运行这个查询,这个函数是。
可能重复:
我希望将mysql中的多行作为变量进行查询。例如:
SELECT name, tid FROM term_data WHERE vid = 2
其结果是:
name | tid
-----|----
Jack | 55
Tony | 87
John | 32
那么我想用的是:
while (...) {
print "My name is: $name and my ID is: $tid";
//name and tid should be printed from database.
}
我可以查询一行并将其放入while中,但这怎么可能呢?