我想这并不容易。我有一个简单的更新查询,运行良好,问题是7-8%的记录没有更新。左联接似乎并不总是与ON子句匹配。
我已经检查了不匹配的字段,看看是否有一些空白,但没有。我还检查了左边表中的副本,这里也没有。当然,我还检查了两个表中的记录是否都存在。
我在Windows10下使用MySQL 8.0
这是我的密码:
UPDATE `61_LoadUnit`
LEFT JOIN `statistics`.`tbl_g08t1`
ON `61_LoadUnit`.`StUnit` = `statistics`.`tbl_g08t1`.`ecarrno`
SET `61_LoadUnit`.`carrno` = `statistics`.`tbl_g08t1`.`carrno`
WHERE `61_LoadUnit`.`carrno` IN (NULL, 0);StUnit=29318284的一些数据。对不起,我不知道如何粘贴桌子。
61_loadunit
<html>
<head>
<title>61_loadunit</title>
<meta name="GENERATOR" content="HeidiSQL 10.2.0.5599">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
thead tr {background-color: ActiveCaption; color: CaptionText;}
th, td {vertical-align: top; font-family: "Tahoma", Arial, Helvetica, sans-serif; font-size: 8pt; padding: 3px; }
table, td {border: 1px solid silver;}
table {border-collapse: collapse;}
thead .col0 {width: 64px;}
thead .col1 {width: 89px;}
thead .col2 {width: 83px;}
thead .col3 {width: 90px;}
thead .col4 {width: 52px;}
thead .col5 {width: 51px;}
thead .col6 {width: 35px;}
thead .col7 {width: 35px;}
thead .col8 {width: 89px;}
thead .col9 {width: 95px;}
thead .col10 {width: 83px;}
.col10 {text-align: right;}
thead .col11 {width: 88px;}
.col11 {text-align: right;}
thead .col12 {width: 157px;}
thead .col13 {width: 67px;}
thead .col14 {width: 71px;}
thead .col15 {width: 70px;}
.col15 {text-align: right;}
thead .col16 {width: 87px;}
.col16 {text-align: right;}
thead .col17 {width: 147px;}
thead .col18 {width: 83px;}
</style>
</head>
<body>
<table caption="61_loadunit (3 rows)">
<thead>
<tr>
<th class="col0">Division</th>
<th class="col1">Confirmation</th>
<th class="col2">RefID</th>
<th class="col3">WCS_LoadId</th>
<th class="col4">MHA</th>
<th class="col5">Rack</th>
<th class="col6">X</th>
<th class="col7">Y</th>
<th class="col8">StUnit</th>
<th class="col9">Weight_LW61</th>
<th class="col10">carrno</th>
<th class="col11">Shortl62</th>
<th class="col12">Partno</th>
<th class="col13">PartRev</th>
<th class="col14">DivCode</th>
<th class="col15">Quantity</th>
<th class="col16">partwght</th>
<th class="col17">CreationDateTime</th>
<th class="col18">RunDate</th>
</tr>
</thead>
<tbody>
<tr>
<td class="col0">WCS1</td>
<td class="col1">0</td>
<td class="col2">10762181</td>
<td class="col3">10762181</td>
<td class="col4">ID1</td>
<td class="col5"></td>
<td class="col6"></td>
<td class="col7"></td>
<td class="col8">AKS22282</td>
<td class="col9">482.00</td>
<td class="col10">32614650</td>
<td class="col11">166540</td>
<td class="col12">RB-12.7/G16VX310A </td>
<td class="col13"> </td>
<td class="col14">AKS </td>
<td class="col15">54000</td>
<td class="col16">0.008454</td>
<td class="col17">2019-08-29T14:52:09Z</td>
<td class="col18">20190830</td>
</tr>
<tr>
<td class="col0">WCS1</td>
<td class="col1">0</td>
<td class="col2">10762178</td>
<td class="col3">10762178</td>
<td class="col4">ID1</td>
<td class="col5"></td>
<td class="col6"></td>
<td class="col7"></td>
<td class="col8">799197533</td>
<td class="col9">126.20</td>
<td class="col10">32577072</td>
<td class="col11">223198</td>
<td class="col12">PER.UCFX12A-A </td>
<td class="col13">33 47 </td>
<td class="col14">479PBE</td>
<td class="col15">15</td>
<td class="col16">5.8</td>
<td class="col17">2019-08-29T14:51:49Z</td>
<td class="col18">20190830</td>
</tr>
<tr>
<td class="col0">WCS1</td>
<td class="col1">0</td>
<td class="col2">10762172</td>
<td class="col3">10762172</td>
<td class="col4">ID1</td>
<td class="col5"></td>
<td class="col6"></td>
<td class="col7"></td>
<td class="col8">29318284</td>
<td class="col9">223.80</td>
<td class="col10"></td>
<td class="col11"></td>
<td class="col12"></td>
<td class="col13"></td>
<td class="col14"></td>
<td class="col15"></td>
<td class="col16"></td>
<td class="col17">2019-08-29T14:51:29Z</td>
<td class="col18">20190830</td>
</tr>
</tbody>
</table>
</body>
</html>
tbl_g08t1
<html>
<head>
<title>tbl_g08t1</title>
<meta name="GENERATOR" content="HeidiSQL 10.2.0.5599">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
thead tr {background-color: ActiveCaption; color: CaptionText;}
th, td {vertical-align: top; font-family: "Tahoma", Arial, Helvetica, sans-serif; font-size: 8pt; padding: 3px; }
table, td {border: 1px solid silver;}
table {border-collapse: collapse;}
thead .col0 {width: 87px;}
.col0 {text-align: right;}
thead .col1 {width: 91px;}
.col1 {text-align: right;}
thead .col2 {width: 77px;}
.col2 {text-align: right;}
thead .col3 {width: 69px;}
.col3 {text-align: right;}
thead .col4 {width: 66px;}
.col4 {text-align: right;}
thead .col5 {width: 74px;}
.col5 {text-align: right;}
thead .col6 {width: 50px;}
.col6 {text-align: right;}
thead .col7 {width: 71px;}
.col7 {text-align: right;}
thead .col8 {width: 62px;}
.col8 {text-align: right;}
thead .col9 {width: 46px;}
.col9 {text-align: right;}
thead .col10 {width: 62px;}
.col10 {text-align: right;}
thead .col11 {width: 64px;}
thead .col12 {width: 54px;}
thead .col13 {width: 65px;}
thead .col14 {width: 65px;}
thead .col15 {width: 56px;}
thead .col16 {width: 63px;}
thead .col17 {width: 70px;}
.col17 {text-align: right;}
thead .col18 {width: 63px;}
.col18 {text-align: right;}
thead .col19 {width: 62px;}
.col19 {text-align: right;}
thead .col20 {width: 69px;}
.col20 {text-align: right;}
thead .col21 {width: 87px;}
.col21 {text-align: right;}
thead .col22 {width: 69px;}
.col22 {text-align: right;}
thead .col23 {width: 93px;}
.col23 {text-align: right;}
thead .col24 {width: 138px;}
thead .col25 {width: 138px;}
thead .col26 {width: 138px;}
thead .col27 {width: 110px;}
thead .col28 {width: 135px;}
thead .col29 {width: 58px;}
.col29 {text-align: right;}
thead .col30 {width: 62px;}
.col30 {text-align: right;}
thead .col31 {width: 66px;}
.col31 {text-align: right;}
thead .col32 {width: 56px;}
.col32 {text-align: right;}
thead .col33 {width: 54px;}
.col33 {text-align: right;}
thead .col34 {width: 58px;}
.col34 {text-align: right;}
thead .col35 {width: 92px;}
thead .col36 {width: 92px;}
thead .col37 {width: 92px;}
thead .col38 {width: 69px;}
.col38 {text-align: right;}
thead .col39 {width: 108px;}
thead .col40 {width: 60px;}
.col40 {text-align: right;}
thead .col41 {width: 65px;}
.col41 {text-align: right;}
thead .col42 {width: 71px;}
.col42 {text-align: right;}
thead .col43 {width: 71px;}
.col43 {text-align: right;}
thead .col44 {width: 73px;}
.col44 {text-align: right;}
thead .col45 {width: 74px;}
.col45 {text-align: right;}
thead .col46 {width: 54px;}
.col46 {text-align: right;}
thead .col47 {width: 94px;}
thead .col48 {width: 193px;}
thead .col49 {width: 74px;}
.col49 {text-align: right;}
thead .col50 {width: 83px;}
.col50 {text-align: right;}
thead .col51 {width: 61px;}
.col51 {text-align: right;}
thead .col52 {width: 71px;}
.col52 {text-align: right;}
thead .col53 {width: 71px;}
.col53 {text-align: right;}
thead .col54 {width: 138px;}
thead .col55 {width: 138px;}
thead .col56 {width: 63px;}
thead .col57 {width: 76px;}
.col57 {text-align: right;}
thead .col58 {width: 70px;}
.col58 {text-align: right;}
thead .col59 {width: 70px;}
.col59 {text-align: right;}
thead .col60 {width: 69px;}
.col60 {text-align: right;}
thead .col61 {width: 66px;}
.col61 {text-align: right;}
thead .col62 {width: 76px;}
.col62 {text-align: right;}
thead .col63 {width: 71px;}
.col63 {text-align: right;}
thead .col64 {width: 67px;}
.col64 {text-align: right;}
thead .col65 {width: 67px;}
.col65 {text-align: right;}
thead .col66 {width: 75px;}
.col66 {text-align: right;}
thead .col67 {width: 140px;}
thead .col68 {width: 57px;}
.col68 {text-align: right;}
thead .col69 {width: 71px;}
.col69 {text-align: right;}
thead .col70 {width: 69px;}
.col70 {text-align: right;}
thead .col71 {width: 79px;}
thead .col72 {width: 48px;}
thead .col73 {width: 54px;}
thead .col74 {width: 83px;}
thead .col75 {width: 67px;}
thead .col76 {width: 67px;}
thead .col77 {width: 54px;}
thead .col78 {width: 54px;}
thead .col79 {width: 85px;}
thead .col80 {width: 77px;}
thead .col81 {width: 59px;}
thead .col82 {width: 76px;}
thead .col83 {width: 67px;}
thead .col84 {width: 67px;}
</style>
</head>
<body>
<table caption="tbl_g08t1 (3 rows)">
<thead>
<tr>
<th class="col0">shortl62</th>
<th class="col1">carrno</th>
<th class="col2">shortg04</th>
<th class="col3">carrtype</th>
<th class="col4">carrstat</th>
<th class="col5">approved</th>
<th class="col6">avail</th>
<th class="col7">reserved</th>
<th class="col8">carrctrl</th>
<th class="col9">lock</th>
<th class="col10">labeled</th>
<th class="col11">mha</th>
<th class="col12">rack</th>
<th class="col13">horcoor</th>
<th class="col14">vercoor</th>
<th class="col15">ldct</th>
<th class="col16">loctype</th>
<th class="col17">stkquant</th>
<th class="col18">stkzero</th>
<th class="col19">delamo</th>
<th class="col20">amooncr</th>
<th class="col21">carrwght</th>
<th class="col22">ldctwght</th>
<th class="col23">carrvol</th>
<th class="col24">regdate</th>
<th class="col25">statdate</th>
<th class="col26">stkdate</th>
<th class="col27">freetxt1</th>
<th class="col28">freetxt2</th>
<th class="col29">minval</th>
<th class="col30">maxval</th>
<th class="col31">freerow</th>
<th class="col32">depth</th>
<th class="col33">width</th>
<th class="col34">height</th>
<th class="col35">bbdate</th>
<th class="col36">ltdate</th>
<th class="col37">lsdate</th>
<th class="col38">lockcode</th>
<th class="col39">allomark</th>
<th class="col40">refg08</th>
<th class="col41">ocarrno</th>
<th class="col42">shortg00</th>
<th class="col43">shortg02</th>
<th class="col44">marktype</th>
<th class="col45">checksum</th>
<th class="col46">origin</th>
<th class="col47">ecarrno</th>
<th class="col48">g08fifo</th>
<th class="col49">g08huqty</th>
<th class="col50">shorto42</th>
<th class="col51">icarrno</th>
<th class="col52">shortg07</th>
<th class="col53">shortg37</th>
<th class="col54">g08pdate</th>
<th class="col55">g08stkch</th>
<th class="col56">origldct</th>
<th class="col57">g08uwrap</th>
<th class="col58">g08retur</th>
<th class="col59">g08scale</th>
<th class="col60">g08stort</th>
<th class="col61">g08tqty</th>
<th class="col62">g08badpu</th>
<th class="col63">g08stqty</th>
<th class="col64">firecode</th>
<th class="col65">shortl66</th>
<th class="col66">g08bcode</th>
<th class="col67">ldctid</th>
<th class="col68">ldctori</th>
<th class="col69">g08crosc</th>
<th class="col70">shortf04</th>
<th class="col71">rundate</th>
<th class="col72">txt8</th>
<th class="col73">txt50</th>
<th class="col74">txt71</th>
<th class="col75">txt72</th>
<th class="col76">txt73</th>
<th class="col77">txt74</th>
<th class="col78">txt75</th>
<th class="col79">txt76</th>
<th class="col80">txt97</th>
<th class="col81">txt98</th>
<th class="col82">txt132</th>
<th class="col83">txt137</th>
<th class="col84">txt155</th>
</tr>
</thead>
<tbody>
<tr>
<td class="col0">165550</td>
<td class="col1">33948712</td>
<td class="col2">2249873</td>
<td class="col3">0</td>
<td class="col4">6</td>
<td class="col5">1</td>
<td class="col6">1</td>
<td class="col7">0</td>
<td class="col8">0</td>
<td class="col9">0</td>
<td class="col10">0</td>
<td class="col11">B </td>
<td class="col12">011</td>
<td class="col13">009</td>
<td class="col14">008</td>
<td class="col15">P01</td>
<td class="col16"> </td>
<td class="col17">6720</td>
<td class="col18">0</td>
<td class="col19">134400</td>
<td class="col20">73600</td>
<td class="col21">110.4</td>
<td class="col22">0</td>
<td class="col23">68.448</td>
<td class="col24">2016-04-28 22:53:09</td>
<td class="col25">2017-11-24 15:08:55</td>
<td class="col26">2017-11-24 15:08:55</td>
<td class="col27"> </td>
<td class="col28">L79CREXP </td>
<td class="col29">0</td>
<td class="col30">0</td>
<td class="col31">7</td>
<td class="col32">0</td>
<td class="col33">0</td>
<td class="col34">0</td>
<td class="col35"> </td>
<td class="col36"> </td>
<td class="col37"> </td>
<td class="col38">0</td>
<td class="col39"> </td>
<td class="col40">0</td>
<td class="col41">0</td>
<td class="col42">0</td>
<td class="col43">0</td>
<td class="col44">0</td>
<td class="col45">0</td>
<td class="col46">0</td>
<td class="col47">J14122156</td>
<td class="col48">0000165550.16042822:53 </td>
<td class="col49">0</td>
<td class="col50">0</td>
<td class="col51">0</td>
<td class="col52">0</td>
<td class="col53">0</td>
<td class="col54">2016-04-28 22:53:09</td>
<td class="col55">2016-09-27 01:40:37</td>
<td class="col56"> </td>
<td class="col57">0</td>
<td class="col58">0</td>
<td class="col59">0</td>
<td class="col60">0</td>
<td class="col61">0</td>
<td class="col62">0</td>
<td class="col63">0</td>
<td class="col64">0</td>
<td class="col65">0</td>
<td class="col66">0</td>
<td class="col67"> </td>
<td class="col68">0</td>
<td class="col69">0</td>
<td class="col70">0</td>
<td class="col71">19-08-29</td>
<td class="col72"></td>
<td class="col73"></td>
<td class="col74">20160427</td>
<td class="col75">20160321</td>
<td class="col76"></td>
<td class="col77">J-SLS201609S</td>
<td class="col78">03</td>
<td class="col79">J14122156</td>
<td class="col80"></td>
<td class="col81"></td>
<td class="col82">JGBR</td>
<td class="col83"></td>
<td class="col84"></td>
</tr>
<tr>
<td class="col0">165551</td>
<td class="col1">378320</td>
<td class="col2">2401256</td>
<td class="col3">0</td>
<td class="col4">6</td>
<td class="col5">1</td>
<td class="col6">1</td>
<td class="col7">0</td>
<td class="col8">0</td>
<td class="col9">0</td>
<td class="col10">0</td>
<td class="col11">A </td>
<td class="col12">011</td>
<td class="col13">054</td>
<td class="col14">011</td>
<td class="col15">P01</td>
<td class="col16"> </td>
<td class="col17">4920</td>
<td class="col18">0</td>
<td class="col19">98400</td>
<td class="col20">98400</td>
<td class="col21">223.8</td>
<td class="col22">0</td>
<td class="col23">65.928</td>
<td class="col24">2019-08-29 11:27:59</td>
<td class="col25">2019-08-29 14:55:29</td>
<td class="col26">2019-08-29 11:27:59</td>
<td class="col27"> </td>
<td class="col28">TI39405 </td>
<td class="col29">0</td>
<td class="col30">0</td>
<td class="col31">5</td>
<td class="col32">0</td>
<td class="col33">0</td>
<td class="col34">0</td>
<td class="col35"> </td>
<td class="col36"> </td>
<td class="col37"> </td>
<td class="col38">0</td>
<td class="col39"> </td>
<td class="col40">0</td>
<td class="col41">0</td>
<td class="col42">0</td>
<td class="col43">0</td>
<td class="col44">0</td>
<td class="col45">0</td>
<td class="col46">0</td>
<td class="col47">29318284</td>
<td class="col48">0000165551.19082911:27 </td>
<td class="col49">0</td>
<td class="col50">0</td>
<td class="col51">0</td>
<td class="col52">0</td>
<td class="col53">0</td>
<td class="col54">2019-08-29 11:27:59</td>
<td class="col55">2019-08-29 11:27:59</td>
<td class="col56"> </td>
<td class="col57">0</td>
<td class="col58">0</td>
<td class="col59">0</td>
<td class="col60">3</td>
<td class="col61">0</td>
<td class="col62">0</td>
<td class="col63">0</td>
<td class="col64">0</td>
<td class="col65">0</td>
<td class="col66">0</td>
<td class="col67"> </td>
<td class="col68">0</td>
<td class="col69">0</td>
<td class="col70">0</td>
<td class="col71">19-08-29</td>
<td class="col72"></td>
<td class="col73"></td>
<td class="col74">20190721</td>
<td class="col75"></td>
<td class="col76"></td>
<td class="col77">V-SKFIT201925C</td>
<td class="col78"></td>
<td class="col79">J19070586</td>
<td class="col80"></td>
<td class="col81"></td>
<td class="col82"></td>
<td class="col83">29318284</td>
<td class="col84"></td>
</tr>
<tr>
<td class="col0">165551</td>
<td class="col1">378344</td>
<td class="col2">2401280</td>
<td class="col3">0</td>
<td class="col4">6</td>
<td class="col5">1</td>
<td class="col6">1</td>
<td class="col7">0</td>
<td class="col8">0</td>
<td class="col9">0</td>
<td class="col10">0</td>
<td class="col11">A </td>
<td class="col12">006</td>
<td class="col13">016</td>
<td class="col14">018</td>
<td class="col15">P01</td>
<td class="col16"> </td>
<td class="col17">5160</td>
<td class="col18">0</td>
<td class="col19">103200</td>
<td class="col20">103200</td>
<td class="col21">232.4</td>
<td class="col22">0</td>
<td class="col23">69.144</td>
<td class="col24">2019-08-29 11:38:52</td>
<td class="col25">2019-08-29 14:51:24</td>
<td class="col26">2019-08-29 11:38:52</td>
<td class="col27"> </td>
<td class="col28">TI39405 </td>
<td class="col29">0</td>
<td class="col30">0</td>
<td class="col31">4</td>
<td class="col32">0</td>
<td class="col33">0</td>
<td class="col34">0</td>
<td class="col35"> </td>
<td class="col36"> </td>
<td class="col37"> </td>
<td class="col38">0</td>
<td class="col39"> </td>
<td class="col40">0</td>
<td class="col41">0</td>
<td class="col42">0</td>
<td class="col43">0</td>
<td class="col44">0</td>
<td class="col45">0</td>
<td class="col46">0</td>
<td class="col47">29318308</td>
<td class="col48">0000165551.19082911:38 </td>
<td class="col49">0</td>
<td class="col50">0</td>
<td class="col51">0</td>
<td class="col52">0</td>
<td class="col53">0</td>
<td class="col54">2019-08-29 11:38:52</td>
<td class="col55">2019-08-29 11:38:52</td>
<td class="col56"> </td>
<td class="col57">0</td>
<td class="col58">0</td>
<td class="col59">0</td>
<td class="col60">3</td>
<td class="col61">0</td>
<td class="col62">0</td>
<td class="col63">0</td>
<td class="col64">0</td>
<td class="col65">0</td>
<td class="col66">0</td>
<td class="col67"> </td>
<td class="col68">0</td>
<td class="col69">0</td>
<td class="col70">0</td>
<td class="col71">19-08-29</td>
<td class="col72"></td>
<td class="col73"></td>
<td class="col74">20190721</td>
<td class="col75"></td>
<td class="col76"></td>
<td class="col77">V-SKFIT201925C</td>
<td class="col78"></td>
<td class="col79">J19070585</td>
<td class="col80"></td>
<td class="col81"></td>
<td class="col82"></td>
<td class="col83">29318308</td>
<td class="col84"></td>
</tr>
</tbody>
</table>
</body>
</html>
发布于 2019-08-30 13:56:31
left join从左表返回所有行,从右表返回匹配行,因此,所有记录都分别从表的左侧更新。
使用INNER JOIN而不是LEFT JOIN,它将匹配表中的数据,并相应地更新表中匹配的记录:
UPDATE `61_LoadUnit`
INNER JOIN `statistics`.`tbl_g08t1`
ON `61_LoadUnit`.`StUnit` = `statistics`.`tbl_g08t1`.`ecarrno`
SET `61_LoadUnit`.`carrno` = `statistics`.`tbl_g08t1`.`carrno`
WHERE `61_LoadUnit`.`carrno` IN (NULL, 0);发布于 2019-08-30 13:52:11
left join用于返回左表的所有行,即使与已连接的表没有匹配。
在您的示例中,如果有mo match,那么statistics.tbl_g08t1.carrno将是null,因此列61_LoadUnit.carrno将被更新为null,但在where子句中,我看到您希望在列为null (或0)时更新该列。
而且,如果该列是null,则此null永远不会成功,因为与null的任何比较都会返回null,而不是true。
那么,left join的意义是什么?
使其成为INNER JOIN,并在WHERE子句中使用正确的语法:
UPDATE `61_LoadUnit`
INNER JOIN `statistics`.`tbl_g08t1`
ON `61_LoadUnit`.`StUnit` = `statistics`.`tbl_g08t1`.`ecarrno`
SET `61_LoadUnit`.`carrno` = `statistics`.`tbl_g08t1`.`carrno`
WHERE `61_LoadUnit`.`carrno` IS NULL OR `61_LoadUnit`.`carrno` = 0或
WHERE COALESCE(`61_LoadUnit`.`carrno`, 0) = 0https://stackoverflow.com/questions/57727011
复制相似问题