是否有可能在mysql中更新然后选择SELECT?

时间:2017-11-02 12:35:13

标签: php mysql

我想更新表格中的列。将列设置为empty,然后执行select语句。

现在我正在尝试像下面这样做

UPDATE issue_meters 
   SET remarks = '' 
   ( SELECT ps.name 'Store name'
                        , im.meter_serial 'Meter Serial Number' 
                        , u.username Issuer 
                        , im.remarks Remarks 
                     FROM issue_meters im
                     JOIN project_store ps 
                       ON im.store_id = ps.id
                     JOIN user u 
                       ON im.issuer = u.id
                 )

它给我以下错误

  

错误代码:1064您的SQL语法出错;检查   与您的MariaDB服务器版本对应的手册   要在'附近使用的语法(选择ps。name作为'商店名称',   im。meter_serial as' Meter序列号' ,'在第1行

我想在同一个查询中执行此操作。

任何帮助都将受到高度赞赏

3 个答案:

答案 0 :(得分:2)

您可以在查询之间使用分号:

UPDATE `issue_meters` SET `remarks` = '';
SELECT ps.`name` AS 'Store name', 
       im.`meter_serial` AS 'Meter Serial Number' , 
       u.`username` AS 'Issuer' , 
       im.`remarks` AS 'Remarks' 
FROM `issue_meters` im 
INNER JOIN `project_store` ps ON im.`store_id` = ps.`id` 
INNER JOIN `user` u ON im.`issuer` = u.`id`

答案 1 :(得分:0)

您无法使用单个查询执行命令  您必须使用两个sql命令

  UPDATE issue_meters 
   SET remarks = '' ;

并且您不应该对列名称别名使用单引号,但是您需要具有空格或保留字的列名别名的后缀

   SELECT ps.name `Store name`
          , im.meter_serial  `Meter Serial Number`
          , u.username Issuer 
        , im.remarks Remarks 
  FROM issue_meters im
  JOIN project_store ps  ON im.store_id = ps.id
  JOIN user u  ON im.issuer = u.id
  ;

答案 2 :(得分:0)

也许您只需要在查询中测试null而不更新基础

SELECT ps.name 'Store name'
                            , im.meter_serial 'Meter Serial Number' 
                            , u.username Issuer 
                            , ifnull(im.remarks,'') Remarks 
                         FROM issue_meters im
                         JOIN project_store ps 
                           ON im.store_id = ps.id
                         JOIN user u 
                           ON im.issuer = u.id