标签: subquery

MySQL更新一样!带子查询的表

我希望更新同一个表的某些行.据我所知,以下形式在MySQL下不起作用

 UPDATE footbl SET foocol=something WHERE foocol in (SELECT ft.foocol ... bla bla )
Run Code Online (Sandbox Code Playgroud)

MySQL论坛的一篇帖子暗示:使用子查询.

所以我的解决方案是:

 SELECT @data:=f2.fname ... bla bla
 UPDATE tfile2 SET fstatus='deleted' WHERE tfile2.fname=(@data);
Run Code Online (Sandbox Code Playgroud)

但是,不幸的是,如果子查询@data占用多行,那么在我的情况下只更新一行.!看看这张照片!

那么,我错了什么,如何在同一个表上更新多行?

感谢您的努力和提前的时间.

乔鲍

mysql subquery

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

如何在sqlalchemy中使用子查询添加行?

我正在使用Postgresql与SQLAlchemy,但似乎sqlalchemy在使用子查询时添加行时遇到问题.

在我的示例中,我想更新表中特定标记的计数器.

在SqlAlchemy中,测试运行类如下所示:

class TestRun( base ):
    __tablename__   = 'test_runs'

    id              = sqlalchemy.Column( 'id', sqlalchemy.Integer, sqlalchemy.Sequence('user_id_seq'), primary_key=True )
    tag             = sqlalchemy.Column( 'tag', sqlalchemy.String )
    counter         = sqlalchemy.Column( 'counter', sqlalchemy.Integer )
Run Code Online (Sandbox Code Playgroud)

然后,插入代码应如下所示:

tag = 'sampletag'
counterquery = session.query(sqlalchemy.func.coalesce(sqlalchemy.func.max(TestRun.counter),0) + 1).\
                            filter(TestRun.tag == tag).\
                            subquery()

testrun = TestRun()
testrun.tag = tag
testrun.counter = counterquery

session.add( testrun )
session.commit()
Run Code Online (Sandbox Code Playgroud)

这个问题是,在运行此代码时它会产生一个非常有趣的错误,它正在尝试运行以下SQL查询:

'INSERT INTO test_runs (id, tag, counter) 
    VALUES (%(id)s, 
            %(tag)s, 
            SELECT coalesce(max(test_runs.counter), %(param_1)s) + %(coalesce_1)s AS anon_1 
               FROM test_runs 
               WHERE test_runs.tag = %(tag_1)s)' 
 {'coalesce_1': …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy subquery

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

mysql子查询返回错误

SELECT 
    upd.*,
    usr.username AS `username`,
    usr.profile_picture AS `profile_picture`
    ,(
        SELECT COUNT (like.id)
        FROM likes as like
        WHERE upd.update_id = like.item_id
           AND like.uid = 118697835834
    ) as liked_update

FROM updates AS upd
LEFT JOIN users AS usr 
    ON upd.uid = usr.uid
WHERE upd.deleted=0
    AND 
    ( upd.uid=118697835834
        OR EXISTS ( SELECT *
                    FROM   subscribers AS sub 
                    WHERE  upd.uid = sub.suid
                    AND  sub.uid = 118697835834
            )
    )
ORDER BY upd.date DESC
LIMIT 0, 15
Run Code Online (Sandbox Code Playgroud)

子查询SELECT返回以下错误:

You have an error in your …
Run Code Online (Sandbox Code Playgroud)

php mysql sql join subquery

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

搜索产品及其规格过滤器

我有一个包含其规格产品的表。我在http://sqlfiddle.com/#!2/15575/1中创建了一个数据样本。我想要创建搜索表单,以便用户可以按其规格搜索产品。用户搜索具有RAM = 2和VGA = 512或VGA = 1的笔记本电脑。我写了一个查询,但是没有用。请帮助我。这个例子:结果:1525,1535,k5,k6 在此处输入图片说明

mysql sql subquery

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

为什么我的更新(从何时选择)语句拒绝识别我的表别名?

我正在浏览AskTom网站,发现什么应该是一个非常强大的更新状态工具,但我的声明拒绝接受子查询后的别名.有人可以帮我解释一下,并可能显示一个解决方案吗?

Update (SELECT T.Date_,T.Name_ 
        FROM TableA T, TableB P
        WHERE P.Date_ = T.Date_
        AND   P.Name_ = T.Name_) SET P.ID = T.Name_
Run Code Online (Sandbox Code Playgroud)

关于如何运行此类更新可能存在其他问题,这将是一个奖励.在尝试理解别名问题时,我对此更感兴趣.我试图分入

TableB.ID = TableA.Name_ 
Run Code Online (Sandbox Code Playgroud)

但没有运气

具体来说错误是ORA-00904无效的标识符.

一如既往地提前感谢.

上面的问题已经回答了我,但我确实有其他一些,因为我试图理解它.

我现在得到ORA-01779无法修改映射到非密钥保留表的列.我认为这是指我正在尝试更新正确的表格?因为我可以从视图或任何其他可能没有pk或fk的适当来源更新.

这种类型的更新语句可以与Oracle临时表一起使用,还是我可以预料到问题?

我可以将这种类型的语句与case语句一起使用来更新TableA中的多个列,还是会出现问题?

再次感谢.

sql oracle subquery

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

子查询问题,SQL Server 2008

只是在SQL Server中使用子查询(我知道这个问题不必用子查询完成,但我想知道我的语法问题在哪里)

select count(*) from 
( select id, totalcharges from tblVisits where (totalcharges <10000))
Run Code Online (Sandbox Code Playgroud)

sql sql-server subquery sql-server-2008

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

子查询中的GROUP BY:慢.使用视图有帮助,但这可以在一个查询中完成吗?

运行此查询需要很长时间:

SELECT host,ip FROM arecords WHERE ip IN 
   (SELECT ip FROM arecords GROUP BY ip HAVING COUNT(ip)>1 )
;
Run Code Online (Sandbox Code Playgroud)

(在我的arecords表中,有时IP上有多个主机.对于这些情况,我想得到主机名+ ip)

我觉得子查询运行了很多次.如果我运行子查询,取结果,并用这些结果替换子查询,它很快.我发现我可以通过使用视图来避免这种情况.

有没有办法用一个查询做到这一点?

[示例SQL结果我想要的结果:http://sqlfiddle.com/#!2/6c1bd/1/0 ]

mysql sql join group-by subquery

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

带有子查询的Sybase插入语句

我正在尝试insert使用子查询,但这insert失败了:

insert into 
    TABLE_A(COL_A, COL_B, COL_C, COL_D, COL_E, COL_F)
    values (
        1, 
        (select COL_B from TABLE_B where user_name = 'foo'),
        (select COL_C from TABLE_C where age = 25),
        2,3,4);
Run Code Online (Sandbox Code Playgroud)

我试着写不同但它仍然失败.

sql sybase insert subquery

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

SQL在3个表之间选择查询

我在创建查询以从3个表中提取数据时遇到了麻烦.

我有一个job_skus桌子,skus桌子和stage桌子,我试图选择整个月jobNo的所有工作skus,例如显示4月份所有工作skus的列表.

表的结构是

Job_Sku                             example data
  JobNo                             J4454             J4454
  Sku (refences Product.Sku)        93339             9947
  Quantity                          500               600
  Stage                             1                 2

Products
   Sku(primary key)                 93339             9947
   Description                      Galvanised Nails  Steel Rods 900mm

Stage
 jobNo                              J4454             J4454
 stage                              1                 2
 date                               04/04/2015        12/04/2015
Run Code Online (Sandbox Code Playgroud)

等等.

我想出了这个问题

SELECT jm.sku,jm.quantity,p.description 
FROM stage as s, products as p, job_sku as jm 
WHERE s.Date BETWEEN '2015-04-01' AND '2015-04-30' 
AND jm.stage = s.stage AND p.sku = jm.sku
Run Code Online (Sandbox Code Playgroud)

但它似乎在查询中获取重复数据.我是否需要使用某种类型的连接,或者可能提取该日期的所有阶段并将结果加入到job_sku表中?

mysql sql subquery

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

如果没有返回行,则返回具有空值的行

如果返回的一个值没有返回任何行,那么有很多关于如何返回NULL的问题.但是,当没有返回结果时,我没有发现任何关于多值查询返回NULL的信息.

主要查询:

SELECT UserOpinion.*, x, y, z... FROM subquery, (x) AS x, (y) AS y...
I trust you get the gist.
Run Code Online (Sandbox Code Playgroud)

我的查询是一个子查询:

(SELECT TOP 1                       
        u.BADId,                        
        Date,                       
        State,                      
        Note,                       
        Comment,                        
        Alias,                      
        Title,                      
        UserId,
        o.Id AS OpinionId                   
    FROM                        
        [Opinion] o                 
    RIGHT JOIN                      
        [User] u                        
        ON                          
        o.UserId = u.Id                     
        WHERE                       
        (Date IS NULL OR (Date = (SELECT MAX(Date)                              
                                FROM [Opinion]                              
                                WHERE UserId = o.UserId )))
        AND                             
            u.BADId = 'myvalue') AS UserOpinion; 
Run Code Online (Sandbox Code Playgroud)

例如,我尝试过以下方法:

(SELECT TOP 1 * FROM (SELECT TOP 1                      
        u.BADId,                        
        Date, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server subquery

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