我正在尝试将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
这是我最初的查询..。
SELECT `id`
FROM `properties`
LIMIT 10, 20
LIMIT条件用于分页。
现在,我必须像以前一样,但是我只需要得到有条件的行的三分之一。
我想出了这个问题,在我搞清楚如何做(总行匹配/ 3) * 2之前,我只是加入了LIMIT 30。
SELECT `id`
FROM `properties`
WHERE `id` NOT IN (SELECT `id`
FROM `properties`
WHERE `vendor` = "
几乎每个人都遇到了以下子查询错误:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
在这种情况下,每个答案都建议我们用left outer join替换子查询。
支持使用in操作的限制子查询是一个很好的特性,因为许多子查询都与in操作符一起使用,但是为什么MySQL开发组决定不将其引入MySQL,是否有任何原因使这些操作符在子查询中受到限制?
2016年11月30日,MySQL8.0最新的测试版文档草稿,Mysql仍然不支持这种子查询。
我有以下查询:
UPDATE pc
INNER JOIN cams
ON cams.cam_id = pc.camuid
SET
timestamp = NOW(),
uid = @out_param:=uid
WHERE zone = 1
AND (unable = '0' OR unable IS NULL)
AND (corrected_plate = '' OR corrected_plate IS NULL)
AND (timestamp IS NULL OR timestamp < (NOW() -
我想在下面的查询中运行更新凭单表
UPDATE vouchers SET status = 6 WHERE voucher_id IN
(
select a.voucher_code from products a
JOIN order b ON a.order_id = b.id
WHERE a.voucher_code != '' LIMIT 10
)
但是,在运行查询时,我会遇到以下mysql错误:
假设我有一个非常简单的桌子,像这样:
CREATE TABLE `t1` (
`key_part1` INT UNSIGNED NOT NULL,
`key_part2` INT UNSIGNED NOT NULL,
`value` TEXT NOT NULL,
PRIMARY KEY (`key_part1`, `key_part2`)
) ENGINE=InnoDB
使用此表,我希望发出如下查询:
SELECT *
FROM `t1`
ORDER BY `key_part1` ASC, `key_part2` DESC
LIMIT 1
我曾希望这个查询中的ORDER BY能
在我前面的一个问题中,我已经提出了解决方案
MySQL1235错误:
错误代码: 1235。这个版本的MySQL还不支持‘限制& IN/ALL/ANY/SOME子查询’
下面的将抛出1235:
DELETE
FROM job_detail_history
where id not in (select id from job_detail_history order by start_time desc limit 2);
为此,我得到了@Zaynul Abadin Tuhin给出的解,它也适用于我。他只是在我的子查询上添加了一个选择层。据他所说,这是一些my
假设,我有一个SQL语句,如下所示。
SELECT country_id, country_name
FROM country
WHERE country_id
IN(SELECT country_id FROM state
WHERE LENGTH(state_name)>=5
ORDER BY LENGTH(state_name) DESC);
它使用指定的子查询从country表中提取state表中相应的状态名称大于5个或更多字符的所有国家。
在按降序排序之后,我只想检索相应的前5状态在state表中有5个或5个以上字符的国家。
在这种情况下,带有子查询的LI
我试图将这个mysql查询转换为sqlalchemy:
SELECT * FROM (SELECT * FROM library WHERE MATCH (title) AGAINST ('**INPUT**' IN boolean MODE) LIMIT 500)
as t WHERE title LIKE '{**INPUT**}%'"
这是我到目前为止得到的,但不是我所期望的:
query.filter(title.match(**INPUT**)).filter(title.like(**INPUT**)).limit(500).all()
我读过MySQL可以缓存UNION's,但同时我也读到了..
避免查询开始时的注释(和空格)- query做简单的优化来检查查询是否可以缓存。正如我前面提到的,只有SELECT查询才被缓存--所以它会查看查询的第一个字母,如果是“S”,则跳过它在缓存中进行查询查找。
来源:
那么,既然UNION的开头是括号,那么它们是如何缓存的呢?
根据mysql.com:
(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a
一周前,我们将数据库从mySQL8转换为MariaDB10,现在出现了严重的性能问题。我们找出了原因:我们经常在select语句和ORDER BY中处理子查询。下面是一个示例:
SELECT id, (SELECT id2 FROM table2 INNER JOIN [...] WHERE column.foreignkey = table.id) queryResult
FROM table
WHERE status = 5
ORDER BY column
LIMIT 10
想象一下,如果table中有1.000.000个条目会受到status = 5的影响。
mySQL8中发生的事情:执
我有下一个mysql查询
SELECT DISTINCT * FROM dom_small WHERE count>=0 AND dom NOT IN
(SELECT dom FROM dom_small WHERE was_blocked=1)
ORDER BY count DESC LIMIT 30 OFFSET 4702020
当我越来越多地增加偏移量时,子查询运行得越来越长。
当偏移量为0时mysql查询加载0秒但当4702020 mysql查询加载1分19秒49秒时
如何解决这个问题?
我在mysql中绑定了一个替代来限制子查询,因为mysql 5不支持子查询中的limit关键字:
SET @i = 0;
SELECT BuildID, COUNT(TestCase)
from results R
where R.BuildID IN (select B.BuildID
from build B
where ( @i := ( @i +1 ) ) <= 25
and B.BuildID NOT LIKE 'T
我得到了以下查询,但它不工作。感谢您的帮助。
mysql_query("SELECT * FROM
(SELECT * FROM Names WHERE suffix='1' AND word!='$main_suffix' ORDER BY votes DESC LIMIT 15)
ORDER BY Rand() LIMIT 3");
我想执行一个从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(
这个问题在这里也存在: .但没有回答。
一个类似的情况发生在我身上,就像发生在这个问题的作者身上一样:
replays表有4M行
players表有4000万行
该查询使用where exists,完成该查询需要大量时间(70):
select * from `replays`
where exists (
select * from `players`
where `replays`.`id` = `players`.`replay_id`
and `battletag_name` = 'test')
order by `i
我的MySQL语句中有一个子select语句,它拒绝知道顶级表/列引用是什么。
这是我第一次使用MySQL,在子查询中引用表和列时似乎有一些限制(请注意,这种查询结构在sql server 2008中工作得很好)。
下面是我的问题:
select
plugin_thold_log.id as id,
plugin_thold_log.host_id as hostname,
from_unixtime(plugin_thold_log.time) as time,
CASE
when TIMESTAMPDIFF(MINUTE,(select from_unixtime(a.time)
我假设在MySQL中执行以下查询:
SELECT `id`, `state`, `city`, `company`, `manager`, `district`, `group`, `subgroup` FROM `data_table` WHERE `id` IN (
SELECT DISTINCT `dataID` FROM `tags_data` WHERE `table` = 'data_table' AND `tagID` IN (
SELECT `id` FROM `tags` WHERE `tag` LIKE '%fruit%'
)
我有一个具体的问题,我需要发挥作用。用户将sttring传递到此函数中。String是MYSQL查询,现在,我想将mysql查询更改为这样,例如,如果我现在得到了SELECT student.name as person FROM student WHERE student.grade = 1 LIMIT 10,我需要创建类似于这个(SELECT student.name as person FROM student WHERE student.grade = 1 LIMIT 10) WHERE person = "John" LIMIT 5 (在哪里观察人)的东西。在(和)之
有没有一种简单的方法可以同时完成这两个查询:
$name = 'somename';
$id = mysql_result(mysql_query('SELECT id FROM table WHERE name = $name'));
$next_id = mysql_result(mysql_query('SELECT id FROM table WHERE id > $id ORDER BY id ASC LIMIT 1, 1'));
谢谢
例如,我有一张表,上面有人的名字和他们的年龄。我想要一个在MySQL中的通用查询,它将拉出n个最老的人。
我可以使用这样的东西:
SELECT * FROM people ORDER BY age DESC LIMIT 1;
假设弗兰克和艾米丽都99岁了。limit 1将只返回其中一个名称。在psuedo-sql中,我希望查询看起来像这样:
SELECT * FROM people WHERE MAX(age);
我知道使用子查询也可以做到这一点,但必须有一种更简单、更通用的方法来实现这一点?
我收到了:
[Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
执行以下查询时:
UPDATE account.account
SET STATUS = 'BLOCK'
WHERE
id IN (
SELECT
p.account_id
FROM
log.log
LEFT JOIN player.player p ON
SELECT MAX(issue) AS issue_one FROM issue_list
WHERE issue NOT IN (SELECT issue FROM issue_list ORDER BY id ASC LIMIT 46);
这个查询有什么问题。上面写着。这个版本的'LIMIT & IN/ALL/ANY/SOME subquery'还不支持MySQL
这里我要做的是从忽略前46行的issue_list表中获得问题的最大值。
怎么做?
我在MySQL中有一个查询:
SELECT * FROM (
SELECT COUNT(*) AS count, t.name AS name
FROM tag t
INNER JOIN video_has_tag v USING (idTag)
GROUP BY v.idTag
ORDER BY count DESC
LIMIT 10
) as tags ORDER BY name
我想用理论来写这篇文章。我怎么能做到这一点?我写道:
Doctrine_Query::create()
->select('COUNT
我一直试图跟踪现有MySQL (5.7,Linux)代码中的错误行为。当子查询返回错误时,我对所发现的行为感到惊讶/困惑/不高兴。
SELECT * FROM charges WHERE ChargeID IN
(SELECT ChargeID FROM history WHERE BatchID = 3500);
上面的查询返回0行。进一步调查,子查询:
SELECT ChargeID FROM history WHERE BatchID = 3500
原来是引起错误(这是正确的):
Error Code: 1054. Unknown column 'ChargeID'
当我添加子查询时,mysql更新语法似乎不起作用。对更新语法的子查询有限制吗?
不管用:
update books set imagename ='name'
where book_ID='(select book_ID from books order by book_ID desc limit 1)';
作品:
update books set imagename ='name'
where book_ID='101';
我对下列列进行了表测试:
code_ver (VARCHAR)
suite (VARCHAR)
date (DATE)
现在,我想选择10行,其值为code_ver & code_ver NOT LIKE '%DevBld%' sorted by date desc.。
因此,我编写了以下查询:
select *
from test
where code_ver IN (select DISTINCT code_ver
from test
where code_ver N
我正在用mysql查询表,这个表每分钟都在增加。该查询还用于分页,也具有limit子句。该表由商店网站上正在访问的用户会话组成。我已经为store_id添加了索引,session_id下面是查询。
SELECT *,
GROUP_CONCAT(email) as email_id
FROM
(
SELECT *
FROM clickstream
WHERE clickstream.store_id = ''
ORDER BY id DESC
) as clck
GROUP BY session_id
ORDER BY s
我试图从我的数据库中的两个表中查询一个结果。下面是我的代码:
$pageid = mysql_real_escape_string($_GET['id']);
$query = sprintf("(SELECT * FROM classifieds WHERE pageid = '$pageid' LIMIT 1)
UNION ALL
(SELECT * FROM resumes WHERE pageid = '$pageid' LIMIT 1)");
$result = mysql_query($query);
while (
我试图通过MySQL查询检索每个ID的最后2个记录(按时间顺序从dt (日期/时间)列中检索)。可以有多个具有相同服务器ID的记录。到目前为止,我的代码是,但无法工作:
select * from table
where sid = id
Order by dt Desc limit 2"
我也尝试过使用ALL函数,但是我的MySQL还没有得到足够的更新,而且我目前无法更新它,所以这不是一个选项。我也尝试过:
select * (partition by server_id order by dt desc) from table
limit 2;
到目前为止,我觉得最接近于解决这个问
我有以下针对单个用户执行的查询:
SELECT b1.id, b1.id_type, b1.id_team,
extra_bets_types.description, teams.conference, teams.division
FROM extra_bets b1
INNER JOIN teams ON b1.id_team = teams.id
INNER JOIN extra_bets_types ON b1.id_type = extra_bets_types.id
WHERE b1.id_user = ?
AND b1.id_season = 6
AND b1.id_type
我有两个表,Resource和views,我试图从Resource表中获得所有项目的列表,这些表的ran_resId与views表的最后两个记录的ran_resId不匹配。我试图在我的子查询中使用LIMIT,这会导致以下错误:
这个版本的MySQL还不支持'LIMIT & IN/ALL/ANY/SOME‘
这是我的疑问-
select r.res_id, r.res_name
from Resource AS r
where r.ran_resId NOT IN
( select v.ran_resId
from views AS v
我正在处理Symfony 3.4项目,我试图将sql查询转换为DQL查询,但我遇到了一个问题。
Mysql查询:
select sum(montant_paye)
from
(select montant_paye
from vente
where client_id = 1
and montant_paye > 0
order by date ASC
limit 2)
as T;
DQL查询(错误):
return $this->getEntityManager()
->createQuer
此查询select @@version limit 0,1返回:
5.6.30-1
我可以不受限制地进行子串:
select substring(@@version,1,1);
返回:
5
我怎样才能做到这一点?
select substring((@@version limit 0,1),1,1);
我想要获得5,我需要这样做才能在存在许多列的情况下工作,但是下面的查询返回一个错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your My
我正在尝试编写一个MySQL查询,该查询将根据查询到TABLE1的结果从TABLE2中选择结果。就像这样:
SELECT route_id FROM trips WHERE trip_id =
SELECT trip_id FROM stop_times WHERE
stop_id=<ID GOES HERE> LIMIT 1
但这不管用所以我试了一下:
SELECT route_id FROM trips WHERE trip_id
INNER JOIN(
SELECT trip_id FROM stop_times WHERE stop_id=<ID GOES
$r=mysql_query("
(
SELECT *
FROM commentsvv AS dt
WHERE FIND_IN_SET(id,'$dset')>0
AND id2='$uid'
AND status_id2='0'
ORDER BY datetimep DESC LIMIT 1)
UNION
(
SELECT *
FROM commentsvv AS dt
WHERE FIND_IN_SET(id2,'$dsetv')>0
AND id='$uid'
从这个问题:,我为MySQL查询编写了以下代码:
UPDATE clientes SET telemarketer =1
WHERE telemarketer IN (
SELECT telemarketer FROM (
SELECT telemarketer FROM clientes
WHERE telemarketer=0
ORDER BY telemarketer DESC
LIMIT 0, 10
) temporal
);
但它正在返回一个SELECT telemarketer FROM
为了获得表的最高值和最小值,正确的(MySql)查询是什么?我得到了这一点,但这是错误的:
SELECT * FROM temperaturs ASC LIMT 3 UNION SELECT * from temperaturs ORDER BY `Temperatur_Celsius` DESC LIMIT 3;
这也是错误的:
SELECT * FROM tabelle_name ORDER BY spalte1 DESC LIMIT k UNION SELECT * FROM tabelle_name ORDER BY spalte1 ASC LIMIT k
从mysql数据库中只删除一条记录的正确方法是什么?此查询仅用于选择一条记录。
SELECT * FROM Customers WHERE Country='Mexico' ORDER BY Country ASC LIMIT 1;
当替换select删除不起作用的.but时,上述查询将正确运行。
DELETE FROM Customers WHERE Country='Mexico' ORDER BY Country ASC LIMIT 1;
我怎么才能修好它?
服务器:MariaDB, version 10.4.17
查询:
select something from (select 1, 2 as something)
phpMyAdmin中的错误:
#1064 - Something is wrong in your syntax 'LIMIT 0, 25'
MySQL工作台中的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax
Mysql 5.7嵌套select查询抛出错误时
Unknown column 'CRoute.ID' in 'where clause'
这是我的查询
SELECT CTrip.ID, CRoute.Name,
(SELECT COUNT(StudentID) FROM CRouteStudent WHERE CRoute.ID = CRouteStudent.RouteID) AS ExpectedStudents,
(SELECT COUNT(*) FROM (SELECT COUNT(*) FROM CRouteStudent WHERE CRout
我正在尝试执行以下查询。
update share set holder = 22 where SHARE_ID IN (select SHARE_ID from SHARE WHERE holder=1 LIMIT 10)
当我尝试执行上面的查询时,我得到了这个错误
#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'