我正在尝试将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(mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1),我编写了这样一个查询:
SELECT
(SELECT count(*)
FROM items
WHERE items.shop_id = shops.id),
(SELECT sum(click)
FROM items
WHERE items.shop_id = shops.id),
(SELECT sum(view)
FROM items
WHERE items.shop_
下面是返回子查询的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行
我们的500 K行视图变得很糟糕,因为它们不能使用底层表的索引。View上的where子句对视图创建没有影响。这个视图是在Mysql子句应用之前创建的吗,就像在Sql server中一样?我们有办法用Where子句和Joins来加速视图查询吗?
,MySQL视图的一个问题是,MySQL不会将谓词从外部查询“推”到视图查询中。
select * from reportview_23 where id = 100;
我想执行一个从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(
EXPLAIN SELECT node_id
FROM node
WHERE person_id IN (SELECT person_id
FROM user
WHERE is_locked = 0);
结果是MySql告诉我该子查询是派生的。但事实并非如此!
(我知道这很容易被重写为连接,但我想知道为什么MySQL认为这是一个依赖子查询。)
我一直试图跟踪现有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 4.0.30上运行一个非常基本的子查询。
我的目标是为任何在特定数据库上拥有授权的用户从mysql.user表中获得用户权限,如mysql.db表中所述。该查询如下所示:
mysql> select * from mysql.user where User IN
(select User from mysql.db where Db='db_name')\G
正如您所看到的,它非常基本,并且遵循。但是,当我执行该操作时,它会出现以下响应错误:
ERROR 1064: You have an error in your SQL syntax. C
我正在构建一个带子查询的MySQL查询。正如中所述,该查询需要group-by查询返回的记录数,因为我需要数据库中有记录的天数。因此,我使用了以下内容:
SELECT
COUNT(*)
FROM
(
SELECT
cvdbs2.dateDone
FROM
cvdbStatistics cvdbs2
WHERE
cvdbs2.mediatorId = 123
GROUP BY
DATE_FORMAT( cvdbs2.dateDone, "%Y-%d-%m" )
) AS activityTempTable
现在,我希望将其作为子
在MySQL 5.1.34服务器上,我遇到以下令人困惑的情况:
mysql> explain select * FROM master.ObjectValue WHERE id IN ( SELECT id FROM backup.ObjectValue ) AND timestamp < '2008-04-26 11:21:59';
+----+--------------------+-------------+-----------------+----------------------------------------------------------
我正在尝试用knex编写MySQL子查询sql,但查询的结果并不理想。 这是我的MySQL查询: select *
from istifta
where istifta_id not in (
select istifta_id
from status
where status = 'divided'
) 这是我转换为Knex的查询: subquery = await ctx.knex
.select('istifta_id')
.from('status'
这个问题在这里也存在: .但没有回答。
一个类似的情况发生在我身上,就像发生在这个问题的作者身上一样:
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
这里的初学者*。我有一个允许用户在其中运行查询的表。但是,在我的系统中,我允许用户在表上运行查询,然后使用相同的查询结果运行另一个查询。
SELECT * FROM employees WHERE jobTitle = 'Sales Rep'
SELECT * FROM employees WHERE officeCode = '1'
以前使用SQLite语法,我能够通过将这两个查询操作到
SELECT * FROM (SELECT * FROM employees WHERE jobTitle = 'Sales Rep') WHERE offi
我有一个MySQL查询(UBU10.04,Innodb,核心i7,16 Ubu内存,固态硬盘,MySQL参数优化):
SELECT
COUNT(DISTINCT subscriberid)
FROM
em_link_data
WHERE
linkid in (SELECT l.id FROM em_link l WHERE l.campaignid = '2900' AND l.link != 'open')
表em_link_data大约有700万行,em_link有几千行。此查询大约需要18秒才能完成。但是,如果我替换子查询的结果并执行以下操作:
SELEC
我在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
我想把表中的一些数据放到shell脚本中的变量中。现在我这样做:
export NAME=`mysql -NB -e "select name from user where id = $ID"`
export AGE=`mysql -NB -e "select age from user where id = $ID"`
export LOCATION=`mysql -NB -e "select location from user where id = $ID"`
这可以很好地工作,但我希望在一个查询中完成所有这些操作,例如:
select
我试图插入多个行,这些行的值不是从现有表中提取的,而是从外部提供的,以及使用INSERT ... SELECT ... WHERE的where条件。
以下查询不起作用:
mysql> insert into `my_table` SELECT 1 as a, 2 as b, 3 as c from dual UNION ALL SELECT 4 , 5 , 6 from dual UNION ALL SELECT 7 , 8 , 9 from dual where 1>2 ;
Query OK, 2 rows affected (0.01 sec)
Records: 2 Dup
我正在mysql中尝试使用子查询,并遇到了以下语句,在这些语句中我们可以在不同的地方使用子查询。
select Salary from Employee where (select max(Salary) from Employee) < 400;
select Salary from Employee where Salary < (select max(Salary) from Employee);
select Salary from (select * from Employee) as seq1 where Salary < 400;
现在,我感到困惑的是,在哪里我
我有下一个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编写DBIx::Class查询(关于如何在DBIx::Class中使用子查询的示例):
SELECT x, (SELECT COUNT(*) FROM t2 WHERE t2.y=x) AS c FROM t1 WHERE t1.z=123
(我知道它可以用JOIN重写为GROUP BY,但我想要的是子查询(举个例子)。)
DBIx::Class文档详细介绍了如何在WHERE子句中使用子查询,但我没有找到如何在SELECT字段列表中使用子查询(如上面的示例所示)。
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
考虑到MySQL中的这个SQL查询:
SELECT * FROM tableA WHERE tableA.id IN (SELECT id FROM tableB);
MySQL对tableA中的每一行执行子查询SELECT id FROM tableB多次吗?
有没有一种方法可以使sql在不使用变量或存储过程的情况下运行得更快?
为什么这通常比使用LEFT JOIN慢
我有一个mysql视图,它在FROM子句中有子查询。此视图可更新。我试着更新单张表,它运行得很好。但我无法插入到那张桌子上。上面写着:
错误代码: 1471。插入的目标表action_view不可插入。
我的视野:
CREATE OR REPLACE
VIEW `action_view` AS
SELECT
`ca`.`id` AS `id`,
`cah`.`title` AS `title`,
`ca`.`idCareActionHead` AS `idCareActionHead`,
`ca`.`id
我有一个MySQL查询,我认为它会抛出一个异常,但它确实not.Just想找出为什么?查询为:
select count(distinct uid)
from nov_visit_20161201
where pv_listen>0
and uid in (select distinct uid from nov_visit_20161120 where pv_listen>0);
问题是表nov_visit_20161120没有pv_listen列,但是查询运行得很好。当我单独运行子查询时:
select distinct uid from nov_visit_2016112
我很好奇MySQL的where ... in (...)语句是否删除了作为优化的副本。
例如,如果我使用子查询,使用DISTINCT删除重复项是否重要?
一个示例查询:
SELECT * FROM foo WHERE bar_id IN (
SELECT id FROM bar where user_id = 4
);
子查询有可能返回重复的bar.id's。
MySQL查询优化是否使查询更好?
SELECT * FROM foo WHERE bar_id IN (
SELECT DISTINCT id FROM bar where user_id = 4
);
从我在
我知道这是件很愚蠢的事,相信我,我什么都试过了。这是我的最后一招。
我正在尝试运行一个子查询。令人惊讶的是,mysql挂起(尽管它不是一个大查询)。
我试图运行这个查询来返回一个Link_ids列表
select distinct link_id from join_link_object where obj_id = (select group_concat(obj_id) from xalt_object where module_name like '%intel-compilers/2016.0.047%');
+---------+
| link_id |
最近,我将MySQL版本从5.5.8改为5.6.23,并遇到了一些查询性能问题。在旧的MySQL中,查询是在合理的时间内执行的,但是在新的server+mysql服务器中,则会变得没有响应。Linux命令
linux~ top
执行查询时显示mysql >100% wcpu。如果单独执行每个子查询,结果将在几秒钟内获取。此时,mysql和apache需要重新启动才能继续工作。
因此,我的问题是优化下一个查询:
SELECT concat_ws('##', pos.name,
( SELECT COUNT(*) FROM nalogi n
WHERE n.oth
我对下列列进行了表测试:
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
我试图在一个SELECT查询的MySQL子句中执行一个关联子查询。如何使用子查询的WHERE子句中的另一列中的行的值?
我一直在引用的“关联子查询示例”部分,但由于某种原因,我的查询不起作用。
这是我的代码:
SELECT Year,
( SELECT COUNT(*)
FROM systems
WHERE SYSTEMTYPE = 'handheld' AND Year = sys.Year
) as handheld,
( SELECT COUNT(*)
FROM systems
WHER
在sqlalchemy查询方面我需要一些帮助。我很难在sqlalchemy中实现这个mysql查询。
MySQL查询:
select u.post_id
from
user_record_cards u
where
u.record_card_id = 1 and u.count = 1
order by (select
count(*)
from
post_likes p
where
p.post = u.post_id)
我的sqlalchemy查询是:
obj = (
UserRecordCard.
有没有一种简单的方法可以同时完成这两个查询:
$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查询:
我的查询如下:
SELECT stock_id,timestamp,price FROM market m1
WHERE timestamp =
(SELECT MAX(timestamp) FROM market m2 WHERE m1.stock_id = m2.stock_id)
但执行起来需要10分钟。
优化它的不同选择是什么?(mysql)
市场有以下模式:(sqlalchemy)
class Market(d
我可以在SQL Server中执行这种查询:
update tblmembers
set hits_archived =
(select count(*)
from tblhits
where tblhits.target_id=tblmembers.id
and tblhits.hitdate < '2009-11-01')
where tblmembers.regdate < '2007-09-28'
如何在MySql 4.0.23中做到这一点?我试图执行该查询,但它返回了以下错误消息:
SQL语法出现错误。检
我想在下面的查询中运行更新凭单表
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错误:
我想运行以下查询:
-- Main Query
SELECT COUNT(*) FROM table_name WHERE device_id IN
(SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA')
以下查询(来自主查询的子查询):
SELECT DISTINCT device_id FROM table_name WHERE NAME = 'SOME_PARA'
在7秒内执行,从210万行的表中产生2691行。
我触发了上面的主查询,它在等待5 mins
假设,我有一个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
我应该在每个子查询中执行一个WHERE,还是只在主查询上执行?我的问题是关于表演。例如:
,在所有子查询中,
SELECT ...
FROM ...
WHERE id_user = :id_user
UNION ALL
SELECT ...
FROM ...
WHERE id_user = :id_user
在这种情况下,每个子查询将具有相同的WHERE子句,由id_user进行过滤。
,其中仅在主查询上
SELECT
SUBQUERY.*
FROM (
SELECT ..., id_user
FROM ...
UNION ALL
SELECT
我在MySQL中的一个查询在执行时花费了太多时间。在这个查询中,我使用In操作符从MySQL数据库中获取数据库。
我的问题是:
SELECT *
FROM databse_posts.post_feeds
WHERE
post_id IN (SELECT post_id FROM database_users.user_bookmarks where user_id=3) AND
post_date < unix_timestamp();
在这种情况下,两个单独的查询的执行时间都非常短,如下所示
SELECT post_id FROM database_users.use
备注:
来自SELECT version()的返回值为10.5.12-MariaDB-log
默认排序规则: utf8mb4_unicode-ci
默认字符集: utf8mb4
UbuntuLinux8.0.29使用MySQL工作台运行的查询
我的目标是删除表中重复的项。我没有任何其他表可用作检查副本的引用。我创建了一个返回预期结果的简单查询和子查询:
SELECT * FROM messages WHERE id NOT IN
(SELECT id FROM
messages
WHERE
我只想按特定类别更新产品。 我通过这个MySQL查询得到了正确的结果: SELECT * FROM wp_posts
WHERE post_type = 'product' 现在,我有两种产品类别,1. ABC和2. XYZ ABC有5种产品,XYZ有30000种产品。 我只想更新具有categoty ABC的产品的元数据 为此,我编写了MySQL查询: UPDATE `wp_postmeta`
SET `meta_value`= ( CASE WHEN `meta_key` = '_stock' THEN '0'
当我添加子查询时,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';