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'),

user_record;

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

1 に答える 1

1

推理の連続です。最初の推測は、テーブルが既に存在することです。すでに存在する場合は、再作成されず (if not exists部品)、入力されません。私はこれを非常に可能性が高いと評価します。

この場合は、単に挿入を行います (以下に示します)。

第二の可能性。user_recordまたは空post_dataです。cross join空のテーブルの Aは を生成します。. . そして空のテーブル。したがって、データは取得されません。私はこれをかなり可能性が高いと評価します。

より遠い可能性は、おそらくインターフェイスのレベルのいくつかの癖が原因で、ステートメントが2つに分割されていることです。私の意見では、次のいずれかを使用したほうがよいでしょう。

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 に答える