标签: subquery

MySQL子选择性能问题?

我需要有关MySQL中子选择性能的建议.由于我无法更改的原因,我无法使用JOIN创建问题过滤器,我只能在WHERE中添加另一个AND子句.

什么是以下表现:

select tasks.*
from tasks
where 
  some criteria
  and task.project_id not in (select id from project where project.is_template = 1);
Run Code Online (Sandbox Code Playgroud)

相比:

select tasks.*
from tasks, project
where
  some criteria
  and task.project_id = project.id and project.is_template <> 1;
Run Code Online (Sandbox Code Playgroud)

请注意,is_template = 1的项目数量相对较少,并且可能存在大量项目,其中is_template <> 1.

如果我不能改变除过滤器之外的任何东西,还有其他方法可以在没有子选择的情况下实现相同的结果吗?

mysql optimization subquery

0
推荐指数
1
解决办法
3611
查看次数

MySQL:使用子查询中的信息DELETE FROM

我有一个表delete_requests,其中我存储了我的users表条目的删除请求的id.是否可以使用delete_requests中的信息作为条件从用户中删除?

我的问题是,结果集通常不会限制在一行,而是返回几行.

DELETE FROM users WHERE id=(SELECT id FROM delete_requests)
Run Code Online (Sandbox Code Playgroud)

所以MySQL抱怨:

#1242 - Subquery returns more than 1 row
Run Code Online (Sandbox Code Playgroud)

这可以在一个语句中完成而不将逻辑放入正在执行的应用程序中吗?

mysql subquery delete-row

0
推荐指数
1
解决办法
1333
查看次数

使用子查询删除Mysql

可能重复:
SQL删除:无法在FROM子句中指定要更新的目标表

我正在尝试删除一些行,但目前还没有成功.

DELETE FROM product_pictures 
WHERE picture = (SELECT picture FROM product_pictures WHERE id = ?)
Run Code Online (Sandbox Code Playgroud)

您不能为update in FROM子句指定目标表'product_pictures'

我之前从未见过这个错误信息,也没有找到一些关于我做错的有用信息.

行的示例:

ID    Picture
19    picture-grey.jpg
20    picture-grey.jpg
21    picture-grey.jpg
Run Code Online (Sandbox Code Playgroud)

mysql subquery

0
推荐指数
1
解决办法
1万
查看次数

如何在mssql 2008中的case语句中使用子查询

如果使用带有子查询的select case语句将else语句改为单个查询,我需要更改以下过程...

 if((select COUNT(*) from pseb.dbo.meterattributedetails where meterid=@meterid)=0)
  select @emf=EMF from pseb.dbo.METERMASTER where MeterID=@meterid
  else  if((select COUNT(*) from pseb.dbo.meterattributedetails where meterid=@meterid and dateadd(day,1,@fromdate)<DateTime)>0) 
    select top 1 @emf=oldvalue from pseb.dbo.meterattributedetails  where MeterID=@meterid and dateadd(day,1,@fromdate)<datetime order by DateTime 
     else 
  select top 1 @emf=newvalue from pseb.dbo.meterattributedetails  where meterid=@meterid and DateTime<@fromdate order by DateTime desc
Run Code Online (Sandbox Code Playgroud)

meterattribute表结构如下:

AttributeID AttributeName   Oldvalue    newvalue    DateTime    meterid
1           EMF         2.00000         4.00000        2012-07-05   4756
1           EMF         4.00000         6.00000        2012-07-10   4756
1           EMF         6.00000         8.00000        2012-07-15   4756
1           EMF         8.00000        10.00000 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server case subquery sql-server-2008

0
推荐指数
1
解决办法
4万
查看次数

SQLite子查询

我有一个子查询的查询,返回多行.

我有一个包含列表的表和一个包含用户的表.我在这两个表之间创建了一个多对多表,称为list_user.

LIST
id INTEGER
list_name TEXT
list_description TEXT

USER
id INTEGER
user_name TEXT

LIST_USER
id INTEGER
list_id INTEGER
user_id INTEGER
Run Code Online (Sandbox Code Playgroud)

我的子查询查询

SELECT * FROM user WHERE id = (SELECT user_id FROM list_user WHERE list_id = 0);
Run Code Online (Sandbox Code Playgroud)

子查询工作(我在代码中使用它,所以0实际上是一个变量),它返回多行.但是上层查询只返回一行,这很合乎逻辑; 我检查id是否等于某个东西,它只检查子查询的第一行.

如何更改我的语句,以便在上层查询中获得多行?

sql sqlite android subquery

0
推荐指数
1
解决办法
4642
查看次数

MySql使用subselect更新

我有一个mysql数据库表,其中有一个电子邮件列,最多可以包含两个以分号分隔的电子邮件.我想要实现的是将电子邮件字段中的第二个电子邮件地址写入另一列电子邮件2这是我迄今为止尝试过的但没有成功:

UPDATE user AS u
SET email2 = (SELECT SUBSTRING_INDEX(email, ';', -1)
              FROM user
              WHERE user.id=u.id)
WHERE username LIKE "%;%"
Run Code Online (Sandbox Code Playgroud)

在搜索这个问题时,有一些解决方案在子查询中没有第二个子查询,但它们都没有真正匹配我的问题.

如果有人有解决方案,请发布.我被困在了2个小时.

非常感谢你.

mysql subquery

0
推荐指数
1
解决办法
355
查看次数

sql插入子查询

我想运行此查询

INSERT INTO [tblPollLogs]
           ([lastModified]
           ,[ip]
           ,[a1]
           ,[a2]
         )
     VALUES
           (getdate()
           ,'aaa'
           ,(select top 1 header from [tblPollAnswer] where [pollAnswerId] = @param1)
           ,(select top  1 header from [tblPollAnswer] where [pollAnswerId] = @param2)         
         )
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误

在此上下文中不允许子查询.只允许标量表达式.

我可以在一个查询中运行此查询,或者我需要在运行此查询之前获取值

谢谢

sql sql-server insert subquery

0
推荐指数
1
解决办法
2798
查看次数

sql server - 在子查询中分组

我无法将结果分组到子查询中.目前,我得到的结果只是给出每个crq_requested_by_company旁边的所有standard_crq的总和,而不是按crq_requested_by_company对它进行分组.

我有以下代码

SELECT crq_requested_by_company 
       ,COUNT(crq_number) as 'count crqs'
       ,(SELECT count(crq_number) FROM change_information where crq_change_timing = 'Standard') as 'standard crqs' 
FROM change_information
GROUP BY crq_requested_by_company
Run Code Online (Sandbox Code Playgroud)

我的结果看起来像这样.standard_crqs应该都小于每个crq_requested_by_company的总计数

crq_requested_by_company    count   standard_crqs   standard_crqs(correct)
A                             4          2824             3
B                             2          2824             1
C                             2269       2824             1745 
D                             7696       2824             3456
E                             110        2824             56
F                             91         2824             17
G                             33         2824             23
H                              295       2824             78 
Run Code Online (Sandbox Code Playgroud)

如果我只是查询

SELECT count(crq_number)
FROM change_information 
WHERE crq_change_timing = 'Standard' 
GROUP BY crq_requested_by_company
Run Code Online (Sandbox Code Playgroud)

这完全没问题

sql sql-server group-by count subquery

0
推荐指数
1
解决办法
83
查看次数

如何加快多个连接的SQL查询执行速度?

我正在使用MySql数据库.我需要将多个(超过10个)表格中的信息合并为一个表格.为了做到这一点,我遵循典型的加入方式.

Select * from 
table_1 
Join table_2
on(table_1.id = table_2.id)
Join table_3
on(table_1.id = table_3.id)
Run Code Online (Sandbox Code Playgroud)

它有效,但在执行期间我受了很多苦.有没有其他好方法来优化我的代码?以下是我的代码示例:

SELECT
distinct 
u.Id, 
oc.dt,
Daily_Number_Outgoing_Calls,     
Daily_Number_Incoming_Calls,    
Daily_duration_Outgoing_Calls

FROM
creditfix.users u

JOIN

#1 Daily_No_Out_Calls
    (
        SELECT
        cl.uId,SUBSTRING(DATE,1,10) as dt,
        count(1) as Daily_Number_Outgoing_Calls

        From creditfix.call_logs as cl
            WHERE
                cl.`type`=2 #out going calls only
        GROUP by cl.uId,dt
    ) oc
    ON (u.Id=oc.Uid)

#2 Daily_No_In_Calls
    JOIN
    (
        SELECT
        cl.uId, SUBSTRING(DATE,1,10) as dt,
        count(1) as Daily_Number_Incoming_Calls
        From creditfix.call_logs as cl
        WHERE
            cl.`type`=1 #incoming calls only
        GROUP by cl.uId,dt
    ) ic …
Run Code Online (Sandbox Code Playgroud)

mysql sql join subquery dbeaver

0
推荐指数
1
解决办法
124
查看次数

在Laravel Eloquent中选择具有关系的字段

如何在laravel雄辩的对象中选择字段

User::select('username', 'firstname', 'lastname')->with(['periods' => function($){
   $->select('jobtitle')->orderBy('start_date', 'desc')->limit(1);
}])->paginate(50);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可能得到句点为空

subquery relationship laravel eloquent laravel-5

0
推荐指数
1
解决办法
2815
查看次数