Mysql 通过从其他两个表中进行选择,将数据插入到表中
最近,我不得不在我已有数百条记录的一个表中插入一个新列。 我想使用Mysql 通过从其他两个表中进行选择,将数据插入到表中,mysql,select,insert,Mysql,Select,Insert,最近,我不得不在我已有数百条记录的一个表中插入一个新列。 我想使用INSERT-INTO-SELECTquery从其他表填充该新列。 各表说明如下 saller\u products表,其中每个销售人员项目都有一个唯一的saller\u products\u id,该值应插入表introw\u log CREATE TABLE `salesman_products` ( `salesman_products_id` int(10) NOT NULL PRIMARY KEY, `sales
INSERT-INTO-SELECT
query从其他表填充该新列。
各表说明如下
saller\u products
表,其中每个销售人员项目都有一个唯一的saller\u products\u id
,该值应插入表introw\u log
CREATE TABLE `salesman_products` (
`salesman_products_id` int(10) NOT NULL PRIMARY KEY,
`salesman_id` int(10) NOT NULL
`product_id` int(10) NOT NULL
) ;
INSERT INTO `salesman_products` (`salesman_products_id`, `salesman_id`, `product_id`) VALUES
(1, 1, 1),
(2, 1, 2),
(3, 2, 1),
(4, 1, 3),
(5, 2, 2);
第二个表是intrown
表,其中我们有saller\u id
,在查询时应使用该id从saller\u产品
表中选择数据
CREATE TABLE `inward` (
`inward_id` int(10) NOT NULL PRIMARY KEY,
`salesman_id` int(10) NOT NULL
) ;
INSERT INTO `inward` (`inward_id`, `salesman_id`) VALUES
(1, 1),
(2, 1),
(3, 2),
(4, 1),
(5, 2);
第三个表,我想在其中填充列saller\u product\u id
,这里我们有intrown
表的主键作为外键,还有product\u id
,应与向内表格中的saller\u id
一起使用,以从saller\u products
表格中选择saller\u products\u id
CREATE TABLE `inward_log` (
`inward_log_id` int(10) NOT NULL PRIMARY KEY,
`inward_id` int(10) NOT NULL,
`product_id` int(10) NOT NULL,
`salesman_product_id` int(10) NOT NULL DEFAULT 0
) ;
INSERT INTO `inward_log` (`inward_log_id`, `inward_id`, `product_id`, `salesman_product_id`) VALUES
(1, 1, 1, 0),
(2, 1, 1, 0),
(3, 1, 2, 0),
(4, 2, 2, 0),
(5, 2, 1, 0),
(6, 3, 1, 0),
(7, 5, 2, 0);
我想用saller\u products\u id
表中的saller\u products\u id
填充saller\u products\u id
表中的saller\u products\u id
列
CREATE TABLE `inward` (
`inward_id` int(10) NOT NULL PRIMARY KEY,
`salesman_id` int(10) NOT NULL
) ;
INSERT INTO `inward` (`inward_id`, `salesman_id`) VALUES
(1, 1),
(2, 1),
(3, 2),
(4, 1),
(5, 2);
我的查询如下,这不会产生预期的结果
INSERT INTO inward_log (salesman_product_id)
SELECT salesman_product_id FROM salesman_products
WHERE salesman_id =
(SELECT salesman_id FROM inward_log GROUP BY inward_log_id)
AND product_id =
(SELECT product_id FROM inward GROUP BY inward_log_id )
order by inward_log_id
sallers\u product\u id
栏中的预期结果应如下所示
+---------------+-----------+------------+---------------------+
| inward_log_id | inward_id | product_id | salesman_product_id |
+---------------+-----------+------------+---------------------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 1 |
| 3 | 1 | 2 | 2 |
| 4 | 2 | 2 | 2 |
| 5 | 2 | 1 | 1 |
| 6 | 3 | 1 | 3 |
| 7 | 5 | 2 | 5 |
+---------------+-----------+------------+---------------------+
你的问题有几个问题:1。您没有给我们提供详细信息表的结构,我只能从您的预期结果部分猜测。2.您还没有给我们任何关于您的表
产品
外观的线索。请填写问题中缺少的详细信息。抱歉@aLuViAn,感谢您指出。我编辑了查询并澄清了存在的更多问题:没有saller\u id
,introw
表中没有introw\u id
。我假设有一些拼写错误,但这实际上使你的问题无效。请复制并粘贴,然后运行您在问题中提出的每个步骤,并确保没有问题,除了您的问题/问题。实际上,现在一切都好了,我们想将数据插入inward\u log
表中,数据应从Sales\u products
表中获取,现在如何从saller\u products
表中获取数据?我们应该从introw\u log
表中获取product\u id
,从introw
表中获取saller\u id
,并基于这两个标准,我们应该获取saller\u product\u id
。由于introw\u log
表中没有saller\u id
,因此我们必须从introw
表中获取它,该表链接到introw\u log
表您已经找到了它!