Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于另一个表的数据删除逗号分隔字段中的条目_Mysql_Join - Fatal编程技术网

Mysql 基于另一个表的数据删除逗号分隔字段中的条目

Mysql 基于另一个表的数据删除逗号分隔字段中的条目,mysql,join,Mysql,Join,首先,我使用的是MySQL 5.0.96。(总是忘了提那件事) 我有两个表(TMP\u VIN\u库存和newvehicles),我每天加载TMP\u VIN\u库存 新车是我们网站表格中当前列出的车辆 我想在新车中查找不在TMP\u VIN\u库存中的结果。(所以我可以从网站上删除它们,因为我们已经出售了它们) TMP\u VIN\u STOCK.name和newvehicles.stocknum是每个表的库存编号列 TMP\u VIN\u STOCK.name只有一个股票编号的值 newve

首先,我使用的是MySQL 5.0.96。(总是忘了提那件事)

我有两个表(
TMP\u VIN\u库存
newvehicles
),我每天加载
TMP\u VIN\u库存

新车
是我们网站表格中当前列出的车辆

我想在
新车
中查找不在
TMP\u VIN\u库存
中的结果。(所以我可以从网站上删除它们,因为我们已经出售了它们)

TMP\u VIN\u STOCK.name
newvehicles.stocknum
是每个表的库存编号列

TMP\u VIN\u STOCK.name
只有一个股票编号的值
newvehicles.stocknum
中可以有多个用逗号分隔的值。(同一辆车只有多个库存编号)

例如:

TMP_VIN_库存表 新车表 如何找出哪些库存编号不在TMP_VIN_库存中,但在新车中?

这有一些详细信息,可以让您拆分新车表中的值,并让您用结果填充(temp)表,然后
不存在
不在
查询将给出您需要的结果


或者,您可以保留前几天的TMP_VIN_库存(可能在表中添加一个日期字段-然后您可以将今天加载的内容与昨天加载的内容进行比较

您的问题完美地说明了为什么应该规范化关系数据库中的表

如果要保留此设计,则必须执行以下操作:

loop over the newvehicles rows:
    loop over the items in the comma separated field
        check if the item does not exist in TMP_VIN_STOCK
更不用说mysql没有分割逗号分隔列表和 更不用说为了从逗号分隔的列表中删除所发现的内容而要经历的痛苦了

你绝对应该重新设计你的数据库。有一个用于车辆数据的表和另一个用于股票数据的表,并用外键链接它们。这样你就不必经历所有这些痛苦。你可以通过简单的查询检索你想要的数据


此外,如果某个条目不在库存中,则不应删除其数据,但计数应为零或标记为缺货。

是逗号让我感到不舒服!这是一个非常糟糕的数据库设计,您希望修复它还是继续使用它?
- S12018, S12039, S12040
- Y13068, Y13093
- T12020
loop over the newvehicles rows:
    loop over the items in the comma separated field
        check if the item does not exist in TMP_VIN_STOCK