SQL where语句有两个条件

时间:2018-03-14 10:44:46

标签: mysql database where

我想将一个列从一个表复制到另一个表中的另一个列,其中第一个表中的id条件在第二个表中是等于id

如果语法正确,如果不是如何纠正,请尽可能地了解尽可能的信息

谢谢

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
      );

例如

    $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表的一部分 和 这是我要复制的表格

    $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

 $tipi_offerte = array(
      array('id_tipo_offerta' => '5','`id_tipo`' => '3','id_offerta' => '5'),

tipo_offerta

 ` $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

2 个答案:

答案 0 :(得分:0)

查看代码似乎需要根据表格offerte和tipi_offerte之间的连接选择插入

假设表格offerte和tipi_offerte与id_offerta相关,您可以使用

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 在这种情况下

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 

但如果问题是关于更新现有行中的值,那么您只需要一个UPDATE

UPDATE offerte  a
inner join tipi_offerte b on a.id_offerta = b.id_tipo_offerta 
set a.tipo_offerta = b.id_tipo

答案 1 :(得分:0)

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

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是offerte表的id