首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有两个条件的SQL语句

带有两个条件的SQL语句
EN

Stack Overflow用户
提问于 2018-03-14 10:44:45
回答 2查看 64关注 0票数 0

我希望将一个列从一个表复制到另一个表中的另一个列,第一个表中的id条件在第二个表中等于id。

请你尽你所能知道语法是否正确,如果不正确,如何改正?

谢谢

代码语言:javascript
复制
INSERT offerte 
SET tipo_offerta = 
    (
      SELECT id_tipo
      FROM tipi_offerte
      WHERE id_tipo_offerta IN 
      (
        SELECT id_tipo_offerta
        FROM tipi_offerte
      ) = id_offerta IN 
      (
        SELECT id_offerta
        FROM offerte
      );

例如

代码语言:javascript
复制
    $tipi_offerte = array(
  array('id_tipo_offerta' => '5','id_tipo' => '3','id_offerta' => '5'),
  array('id_tipo_offerta' => '6','id_tipo' => '2','id_offerta' => '6'),
  array('id_tipo_offerta' => '7','id_tipo' => '2','id_offerta' => '7'),
  array('id_tipo_offerta' => '8','id_tipo' => '2','id_offerta' => '8'),

这是我将要使用的tipi_offerta表的一部分,下面是我要复制的表

代码语言:javascript
复制
    $offerte = array(
  array('id_offerta' => '6','titolo' => 'Vinci un fantastico Barbecue Weber con Develey!','slug' => 'vinci-un-fantastico-barbecue-weber-con-develey','link' => 'http://concorsi.develey.it/','negozio' => 'Develey','data_scadenza' => '2016-09-30','slider' => '1','contenuto_riservato' => '0','contenuto_verificato' => '1','in_evidenza' => '0','pagina_dedicata' => '1','descrizione' => 'Acquista le seguenti salse a marchio Develey nel formato vaso vetro 250ml: Salsa Messicana, Salsa Greca, Salsa Barbecue e il prodotto Ketchup BBQ in confezione Squeeze 250ml tutte riportanti un fix-a-form con il logo pubblicitario del concorso, e conserva lo scontrino in originale di acquisto. Compila il form di registrazione con tutti i tuoi dati e inserisci quelli dello scontrino in originale.','seo_personalizzato' => '1','seo_titolo' => 'Vinci un fantastico Barbecue Weber con Develey!','seo_keyword' => 'Barbecue Weber','seo_descrizione' => 'Comprando alcuni prodotti Develey è possibile vincere un Barbecue Weber. Munirsi dello scontrino originale.','pubblicita' => '0','codice_sconto' => '','click' => '50','autore' => 'giuseppe','stato' => '10','data_inserimento' => '2016-06-22 15:03:34','data_aggiornamento' => '2016-09-06 14:46:03','visto' => '1','modificata_da' => NULL,'tipo_offerta' => NULL),
  array('id_offerta' => '7','titolo' => 'Scopri come vincere Buoni MediaWorld da 100€','slug' => 'scopri-come-vincere-buoni-mediaworld-da-100','link' => 'http://www.compagnidiviaggio-avventuristi.it/registrazione','negozio' => 'Allianz','data_scadenza' => '2016-09-15','slider' => '1','contenuto_riservato' => '0','contenuto_verificato' => '1','in_evidenza' => '0','pagina_dedicata' => '1','descrizione' => 'Registrati e rispondi ai questionari proposti per poter vincere Buoni MediaWorld da 100 euro! Per maggiori info consulta il regolamento.','seo_personalizzato' => '1','seo_titolo' => 'Scopri come vincere Buoni MediaWorld da 100€','seo_keyword' => 'Buoni MediaWorld','seo_descrizione' => 'Non farti scappare l\'occasione di vincere Buoni MediaWorld da 100€. Offerta valida fino al 15 luglio 2016.','pubblicita' => '0','codice_sconto' => '','click' => '16','autore' => 'giuseppe','stato' => '10','data_inserimento' => '2016-06-22 16:14:25','data_aggiornamento' => '2016-06-29 11:23:07','visto' => '1','modificata_da' => NULL,'tipo_offerta' => NULL),
  array('id_offerta' => '8','titolo' => 'Super Premi Estivi targati Maxibon: power bank, teli da mare e altro','slug' => 'super-premi-estivi-targati-maxibon-power-bank-teli-da-mare-e-altro','link' => 'https://www.buonalavita.it/maxibon/','negozio' => 'Nestlè','data_scadenza' => '2016-07-31','slider' => '1','contenuto_riservato' => '0','contenuto_verificato' => '1','in_evidenza' => '0','pagina_dedicata' => '1','descrizione' => 'Registrati e partecipa al concorso Maxibon per vincere i prodotti da mare della linea "Granella" o "Biscotto": avrai fino a 10 possibilità al giorno!','seo_personalizzato' => '1','seo_titolo' => 'Super Premi Estivi targati Maxibon: power bank, teli da mare e altro','seo_keyword' => 'Concorso Maxibon','seo_descrizione' => 'Con il concorso Maxibon è possibile vincere teli da mare, palloni, power bank, occhiali e magliette.','pubblicita' => '0','codice_sconto' => '','click' => '49','autore' => 'giuseppe','stato' => '10','data_inserimento' => '2016-06-22 16:15:35','data_aggiornamento' => '2016-06-29 11:22:44','visto' => '1','modificata_da' => NULL,'tipo_offerta' => NULL),

我想复制id_tipo

代码语言:javascript
复制
 $tipi_offerte = array(
      array('id_tipo_offerta' => '5','`id_tipo`' => '3','id_offerta' => '5'),

tipo_offerta

代码语言:javascript
复制
 ` $offerte = array(
      array('id_offerta' => '6','titolo' => 'Vinci un fantastico Barbecue Weber con Develey!','slug' => 'vinci-un-fantastico-barbecue-weber-con-develey','link' => 'http://concorsi.develey.it/','negozio' => 'Develey','data_scadenza' => '2016-09-30','slider' => '1','contenuto_riservato' => '0','contenuto_verificato' => '1','in_evidenza' => '0','pagina_dedicata' => '1','descrizione' => 'Acquista le seguenti salse a marchio Develey nel formato vaso vetro 250ml: Salsa Messicana, Salsa Greca, Salsa Barbecue e il prodotto Ketchup BBQ in confezione Squeeze 250ml tutte riportanti un fix-a-form con il logo pubblicitario del concorso, e conserva lo scontrino in originale di acquisto. Compila il form di registrazione con tutti i tuoi dati e inserisci quelli dello scontrino in originale.','seo_personalizzato' => '1','seo_titolo' => 'Vinci un fantastico Barbecue Weber con Develey!','seo_keyword' => 'Barbecue Weber','seo_descrizione' => 'Comprando alcuni prodotti Develey è possibile vincere un Barbecue Weber. Munirsi dello scontrino originale.','pubblicita' => '0','codice_sconto' => '','click' => '50','autore' => 'giuseppe','stato' => '10','data_inserimento' => '2016-06-22 15:03:34','data_aggiornamento' => '2016-09-06 14:46:03','visto' => '1','modificata_da' => NULL,'tipo_offerta' => NULL),`

其中id_tipo_offerta等于id_offerta

EN

回答 2

Stack Overflow用户

发布于 2018-03-14 11:00:57

从您的代码来看,您需要基于表提供和tipi_offerte之间的联接,通过选择插入

假设提供的表和tipi_offerte是由id_offerta关联的,则可以使用

代码语言:javascript
复制
insert into offerte (tipo_offerta, id_offerta)
select b.id_tipo, a.id_offerta
from offerte a 
inner join tipi_offerte b on a.id_offerta = b.id_offerta

但在本例中,您的关系可能是基于a.id_tipo_offerta = b.id_tipo_offerta的

代码语言:javascript
复制
insert into offerte (tipo_offerta, id_offerta)
select b.id_tipo, a.id_offerta
from offerte a 
inner join tipi_offerte b on a.id_tipo_offerta = b.id_tipo_offerta 

但是,如果问题是更新现有行中的值,那么只需进行更新即可。

代码语言:javascript
复制
UPDATE offerte  a
inner join tipi_offerte b on a.id_offerta = b.id_tipo_offerta 
set a.tipo_offerta = b.id_tipo
票数 0
EN

Stack Overflow用户

发布于 2018-03-14 11:01:59

如果我正确地理解了你的问题(真的不确定),那么这就是你想要的:

代码语言:javascript
复制
UPDATE 
    offerte
SET 
    offerte.tipo_offerta = tipi_offerte.id_tipo
FROM 
    offerte
    INNER JOIN tipi_offerte
        ON offerte.id = tipi_offerte.id_tipo_offerta

这是假设在表tipi_offerte中,列id_tipo_offerta是提供表的id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49275644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档