下面的查询应该返回多行多列数据库中的数据,而不需要使用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中,我读到对于有很多行的大型表,使用ORDER BY RAND()不是一个好主意(即使大约有500个行表也是如此)。速度慢,效率低。很多行扫描。
这(下面)看起来是一种替代方案吗?
SELECT * FROM (通常返回少于20行的...subquery...)ORDER BY RAND()限制8
我会选择一个较小的子集,而不是对大量数据使用RAND(),只有这样,我才会对返回的行应用RAND()。在99.9%的情况下,上面看到的子查询选择的行数应该少于20行(实际上,它通常少于8行)。
好奇地想听听人们的想法。
(仅供参考,我正在用PHP做我的MySQL工作。)
谢谢!
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中执行这个查询时,错误子查询会返回多行。但是,
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 * 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=“部件和子查询允许多行?
谢谢你提前帮忙。
当使用同一表上的其他数据集应用条件(小于符号)更新一组数据时,我会出错。有人能帮帮我吗。
以下是我的神谕查询-
UPDATE TABLE
SET COLUMN1 = 1
WHERE COLUMN2 = 'Y'
AND COLUMN3 = 'N'
AND TRUNC(COLUMN4) <
(SELECT TRUNC(COLUMN4)
FROM TABLE
WHERE COLUMN3 = 'Y' AND COLUMN4 = 'Y')
错误如下-
我有这样的代码:
query = """SELECT sp.customer_surname, sp.amount, cp.amount, sp.monthly, sp.date_ FROM set_payment7777 sp JOIN customers_payments7777 cp ON cp.customer_VAT = sp.customer_VAT WHERE sp.date_ = (SELECT MAX(date_) FROM set_payment7777 GROUP BY customer_VAT) GROUP BY sp.customer_VAT&
是否有优化以下查询的方法?
SELECT count(*)>1000 FROM table_with_lot_of_rows WHERE condition_on_index;
使用此查询,MySQL首先执行count(*),然后执行比较。当只有少数行满足条件时,这是快速的,但如果很多行满足条件,则可能要花费很长时间。是否有办法在找到1000项后立即停止计数,而不是检查所有的结果?
特别是,我对带有全文条件的MyISAM表感兴趣,但是对于InnoDB和/或basic WHERE子句的任何回答都会有所帮助。
执行以下mysql命令时,相关子查询似乎会返回多个行。
问题1 :为什么MAX能够返回多个行?
问题2.如何使用“=”运算符来匹配多行?
SELECT Continent, Name, Population
FROM Country c
WHERE Population = (SELECT MAX(Population)
FROM Country c2
WHERE c.Continent=c2.Continent AND Population > 0);
+---------------+---
我有这样的东西:
UPDATE table set new_id=(SELECT distinct t2.new_id
FROM table t1
inner join (SELECT hn.id,max(hn.id) OVER (PARTITION BY first_name,MIDDLE_NAME,last_name) AS new_id
from table)t2
on t1.id=t2.id);
这个查询抛给我一个错误,指出单行子查询返回多行。
请帮助我了解如何更新new_id值的语法
我有一个查询,它从一个名为“customers”的表中返回每个CustomerID的最新日期时间。表中有许多不同的CustomerID条目,有许多行具有相同的CustomerID,但具有不同的日期时间条目。我一直在使用下面的查询,该查询为每个唯一的CustomerID返回一行,并返回该CustomerID的最新(最大)日期。这个表大约有6000行。
顾客桌:
CustLogID (Primary key, INT 11)
CustomerID (INT 11)
DateTime (DATETIME)
查询:
SELECT
CustomerID AS custid,
DateTime AS la
我读了很多帖子,但是我无法理解要写的错误和我的查询。
我想要有超过1000个的poster_id
SELECT * FROM `posters`
WHERE title LIKE '%it%'
AND id = (
SELECT poster_id FROM `poster_likes`
WHERE action=1
GROUP BY poster_id
HAVING COUNT(*) < 100
)
子查询返回多行。
有谁能帮我写这个查询吗?提前谢谢。
我有一个名为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 -结果包括多行
使用条件从另一个表的列填充列时
UPDATE EVENT E
SET TIMESTART = (SELECT TIMESTART FROM EVENTSTEPS WHERE STEPNUMBER=1)
WHERE EVENTREF = (SELECT EVENTREF FROM EVENTSTEPS);
我在10g中得到了这个错误:
ORA-01427:单行子查询返回多行。
如果我想从其他表列填充表的列,我不知道应该做什么。有人能帮我吗?谢谢。
我正在尝试在MYSQL中执行这样的查询
select
Sum(case when WindowsXP = "PASS" then 1 else 0 end) as PASS ,
Sum(case when WindowsVista = "FAIL" then 1 else 0 end) as FAIL
from OS_Table where BuildID = (select distinct BuildID from OS_Table)
group by BuildID
错误是子查询返回多行。如果我使用IN而不是=,那么查询将永远进行(几乎在3分钟后它不
我是php的新手。我有一个代码,在其中我尝试使用子查询打印多个行。
<?php
include ("connection.php");
$q_opinion="SELECT r.client_id,c.id,t.id,a.id,o.id,c.name as opinion, r.notification_date, t.title as ttitle,a.title as atitle,o.title as otitle, l.title as ltitle, s.title as stitle, pr.opinion_id, pc.id, pr.client_
select
disease_name
from
disease
where
disease_id=
(select disease_id from disease_symptom where
disease.disease_id=disease_symptom.disease_id AND
symptom_id=
(select symptom_id from symptom where symptom.symptom_id=disease_symptom.symptom_id
我成功地创建了一个查询,它过滤了table1中的许多行,只过滤了那些需要更新的行。现在,我需要更新table1上的一些值,但只更新那些在我的子查询的过滤结果上的值。到目前为止,我已经尝试了以下几点:
update table1 set value1=some_value, value2=some_value where exists (subquery);
这样,我想更新子查询结果上存在的所有table1行。而是更新的所有table1行。有什么帮助吗?
我在查询上遇到麻烦了。我试图使用子查询从db查询返回单个值(最后,我需要有多个返回单个值的子查询。我不断地得到50行返回,但是每个行的值都相同。
如果只运行子查询,它只返回一个值,但当我使用它作为子查询时,它会返回许多行。这是Oracle,有人能看出我做错了什么吗?
谢谢你的帮助。
SELECT (SELECT COALESCE(avg(elapsedtime),0)
FROM TableName WHERE functioncallid = 'functionName'))
"newname" FROM TableName
我希望用它们的百分位数或等级来更新表univ_members的一些行,用它们的宇宙#来区分它们。该pctile值是在子查询中计算的。子查询本身运行良好,但是当输入到更新时,"Subquery返回多行“会失败。代码块中的第23行是违规表达式。(这段代码是从,,以及最终(我认为)从一本书“高性能MySQL",Schwartz,Zaitsev,Tkachenko,p. 648 et seq中收集的。第三版)
--我无法让它与更新一起工作。我开始怀疑,在这里阅读了大约30篇关于更新和"Subquery返回多行“的文章之后,我开始怀疑,在一个复杂的查询中,在MySQL中这是不可能
我有下面的查询,它应该可以工作。但是,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
select first_name, middle_name, last_name
from students
where student_id = any (select student_id
from entries
where subject_id = (select subject_id
from subjects
我有一个包含字段id、text和title的表。可能有多个行具有相同的title (title不是唯一的)。此外,id是主键。
我只需要知道是否至少有一行title="A“在text中包含字符串"aaa”,另外至少有一行title="B“在text中包含字符串"bbb”。
这是我尝试过的:
mysql> SELECT (SELECT text FROM table WHERE title = 'A') as aText, (SELECT text FROM table WHERE title = 'B') as bText;
我编写了一个sql查询。
select a.unit_code unit,
a.gh_vill pl_vill,
a.gh_grow pl_grow,
(select gh_area
from w_cane_survey_2013 b
where b.croptype_code > 12 and a.gh_no = b.gh_no ) as paudha,
(select gh_area
from w_cane_survey_2013 b
where b.crop
我目前正在使用以下内容更新我的表:
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+行)时,这似乎相当低效/缓慢。我正在进行的所有搜索都表明,与子
Server有一个名为的方便运算符,它返回
在有限的结果集中与最后位置相匹配的两个或更多行
例如,来自{10、9、8、8、2}的TOP 3 WITH TIES将返回{10、9、8、8}。
对于TOP N WITH TIES和MongoDB是否有一个单一的查询等价?
我不能使用两个查询(第二个查询搜索第一个查询返回的最小值),因为我在一个中运行这个查询,这个函数是。
下面是返回子查询的MySQL代码。我希望子查询只返回一行。
SELECT DISTINCT w.cname
FROM works w
WHERE
(SELECT DISTINCT w.cname, AVG(w.salary)
FROM works w
WHERE 1
GROUP BY w.cname
)
<
(SELECT DISTINCT w.cname,AVG(w.salary)
FROM works w
WHERE 1
GROUP BY w.cname
)
MySQL错误说:
1242 -子查询返回多于1行
在更新查询时,我得到这个错误,单行子查询返回多行,这是我的更新查询
UPDATE GT_POLICY GP SET (ERP_POLICY_NO,ERP_INSERT_DATE,ERP_CUSTOMER_ID) = (SELECT ERP.POLICY_NUMBER,ERP.ISSUE_DATE,ERP.MDM_ID FROM ERP_POLICY_DETAILS ERP WHERE GP.ALTERNATE_POLICY_NO=ERP.ALT_POL_NO AND ERP.ALT_POL_NO LIKE 'POL%') WHERE GP.ERP_POLICY_NO IS NU