簡體   English   中英

即使SELECT數據來自同一源表和列,MySql表列也具有不同的CHARSET和COLLATION?

[英]MySql table columns have different CHARSET and COLLATION even when SELECT data is from the same source table and column?

在創建一個簡單的(臨時)MySQL表時,從同一源表的同一列中獲取數據,最后得到的兩個列將具有不同的CHARACTER SET和默認的COLLATION設置:

mysql> CREATE TABLE tempDates
       SELECT SUBDATE(MAX(EventDate), INTERVAL 90 DAY) AS StartDate,
       MAX(EventDate) AS EndDate FROM james_bond_007
       WHERE EventCategory = 'Successful_Kills';

這是顯示結果表結構的輸出:

mysql> SHOW CREATE TABLE tempDates;

CREATE TABLE `tempDates` (
  `StartDate` varchar(29) CHARACTER SET utf8 DEFAULT NULL,
  `EndDate` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

我運行了一個alter table命令,但沒有改變:

ALTER TABLE tempdates CHARACTER SET latin1 COLLATE latin1_swedish_ci; 

從好奇心的角度來看,我想知道為什么會發生這種情況,從實際的角度來看,我如何做到這一點呢?

我想要的結果是所有列都具有服務器默認值:CHARACTER SET latin1 COLLATE latin1_swedish_ci

更好的方法是在所有列上強加服務器默認值,這樣我以后在此類型的查詢中不必鍵入過多的內容。

@Rick James這解決了我的問題,所以我想標記為已回答。

如果您有時間,也許可以解釋一下原因? (給我另一個借口支持您並接受您的回答)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM