我正在调和两个不同的数据源。我正在尝试根据这样的条件,根据一堆条件从其中一个插入另一个

INSERT INTO `tab`.`listsalesorders`
(`number`,
`name`,
`status`,
`parentProjectID`,
`dateEntered`,
`individualId`,
`taxable`,
....
SELECT
m.number as `number`,
m.name as `name`,
3 as `Status`,
-1 as `individualId`,
m.parentProjectID as `parentProjectID`,
m.dateEntered as `dateEntered`,
m.taxable as `taxable`,
...
FROM (SELECT si.number as `number`,
si.description as `name`,
si.date as `dateEntered`,
p.idx as `parentProjectID`,
si.date as `Date`,
IF(si.salesTaxID='NJ',2,1) as `taxable` FROM listsoli si
JOIN listprojects p ON LEFT(si.number,LOCATE('-',si.number) - 1)=p.number
GROUP BY si.number) as m;


而我得到Error Code: 1292. Incorrect datetime value: '498' for column 'dateEntered' at row 1

我在另一个选项卡中浏览了我的SELECT语句数据,同时添加了HAVING dateEntered LIKE '%498%'以及HAVING dateEntered IS NULLHAVING dateEntered = '',因为我阅读了这两个都会导致问题,但没有出现任何一行。仅查看数据并按dateEntered对其进行排序,我发现两端都没有问题。

是什么原因造成的,如何解决或解决它?

最佳答案

对于INSERT ... SELECT语句,列名(或别名)无关紧要。 INSERT和SELECT中的列顺序必须匹配。例:

INSERT into test_table (a, b, c)
SELECT
  'c' as c,
  'b' as b,
  'a' as a


是相同的

INSERT into test_table (a, b, c)
SELECT 'c', 'b', 'a'


要么

INSERT into test_table (a, b, c)
VALUES ('c', 'b', 'a')


在表中,您将拥有

a   | b   | c
----|-----|----
'c' | 'b' | 'a'


换句话说:列不通过名称匹配,而是通过位置匹配。

关于mysql - 无法从选择语句中插入日期错误代码:1292 MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57499888/

10-12 03:56