0

我有表 post_data 和 user_record。里面有数据。

现在我创建了表:

CREATE TABLE IF NOT EXISTS `post_table` (
  `id` varchar(40) NOT NULL DEFAULT '',
  `url` varchar(255) DEFAULT NULL,
  `preview` varchar(255) DEFAULT NULL,
  `img_url` varchar(128) DEFAULT NULL,
  `title` varchar(128) DEFAULT NULL,
  `hash` varchar(128) NOT NULL DEFAULT '',
  `rate` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`,`hash`)
) as select user_record.id, post_data.url, post_data.preview, post_data.img_url, 
post_data.title, post_data.hash, post_data.rate 
from user_record , post_data 

成功创建,

但是当我执行“ select * from post_table”时,它显示为空。

为什么?

post_data 值:

('123', 'http://ec2-33-226-213-43.compute-1.amazonaws.com/', '\r\n\r\n\r\n \r\n \r\n    \r\n \r\nr\n      \r\n     \r\n    \r\n    \r\n    \r\n  \r\n\r\n    \r\n\r\n\r\n ...', '', 'ThenWat...', '75934958552638f4e45cc39cb0c7ec45', 'undefined'),
('123', 'http://paulgraham.com/', '', '...', '', '...', 'dda473844c159b9f18cbaff136cbd38e', '3'),
('123', 'https://www.facebook.com/', '  me l...', 'https://m-static.ak.fbcdn.net/rsrc.php/v2/y6/r/Rv99Vzk9qsR.png', '...', 'e203e98e4c606735cf56db84a002fd22', 'undefined'),
('166054635', 'www.facebook.com', '', '...', '', '...', '660328a7f9004d462085aa67a82065db', 'undefined');
('166054635', 'http://stackoverflow.com', ' \r\n...', 'http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon@2.png', 'Stack Overflow...', '57f4dad48e7a4f7cd171c654226feb5a', '1.5'),

用户记录;

(123, 'jan', 'mail@mail.com', 'x.jpg'),
(166054635, 'don', 'x@y.com', 'temp.jpg')
4

1 回答 1

1

这是一系列的猜测。第一个猜测是该表已经存在。如果它已经存在,则不会再次创建(if not exists零件),也不会填充。我认为这很有可能。

如果是这种情况,只需进行插入(如下所示)。

第二种可能。要么 要么user_recordpost_data空的。cross join空桌子上的A产生 。. . 和空表。所以你没有得到任何数据。我认为这很有可能。

一个更遥远的可能性是该语句被分成两部分,可能是由于界面级别的一些怪癖。在我看来,您最好选择以下之一:

CREATE TABLE IF NOT EXISTS `post_table` (
  `id` varchar(40) NOT NULL DEFAULT '',
  `url` varchar(255) DEFAULT NULL,
  `preview` varchar(255) DEFAULT NULL,
  `img_url` varchar(128) DEFAULT NULL,
  `title` varchar(128) DEFAULT NULL,
  `hash` varchar(128) NOT NULL DEFAULT '',
  `rate` varchar(16) DEFAULT NULL,
  PRIMARY KEY (`id`,`hash`)
);
insert into post_table(id, url, preview, img_url, title, hash, rate)
    select user_record.id, post_data.url, post_data.preview, post_data.img_url, 
           post_data.title, post_data.hash, post_data.rate 
    from user_record cross join post_data;

或者:

CREATE TABLE IF NOT EXISTS `post_table` as
    select user_record.id, post_data.url, post_data.preview, post_data.img_url, 
           post_data.title, post_data.hash, post_data.rate 
    from user_record cross join post_data;
于 2013-11-06T21:18:10.757 回答