2010-11-30

MySQL 剔除某欄重複的資料

使用 GROUP BY:
SELECT * FROM `some_table` GROUP BY `some_field`

將結果寫入另一張表:

CREATE TABLE `tmp_table` AS (
SELECT * FROM `some_table` GROUP BY `some_field`
)


使用 DISTINCT 只能用於某一欄或著某些欄位:
SELECT DISTINCT `some_field` FROM `some_table`
SELECT DISTINCT `some_field`, `another_field` FROM `some_table`
SELECT DISTINCT * FROM `some_table` (含主鍵的話,此行無用)

另外,計算重複的個數:
SELECT *, count(*) FROM `some_table` GROUP BY `some_field`

2010-11-29

本機設定虛擬網域

在 Windows,修改下列的設定檔:
C:\WINDOWS\system32\drivers\etc\hosts

在 Mac,修改下列的設定檔:
/etc/hosts

在 Mac,用 TextEdit 的方式(使用 Terminal):
sudo -s
/Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts

內容格式為:
127.0.0.1  my_pseudo_domain.com

2010-11-22

在 PHP 中使用 SQLite3

很早就知道 PHP5 內建 SQLite 的功能,但是一直沒在 PHP 上使用 SQLite,原因無它「有 MySQL 幹嘛用 SQLite」。
Adobe AIR 上的是 SQLite3,Firefox 的外掛 SQLite Manager 也(只)支援 SQLite3,搭配起來還蠻方便的。
最近有個案子是要做多國語言的展示平台(當然是用 Flash 做囉),要讓管理人員(不會是我)上平台的內容。問題出在那台機器可能沒有網路,就算有網路,頻寬也可能會是個問題,所以要做單機的版本。
展示端無庸置疑 Adobe Flash/AIR 是個好選項,但內容管理用 AIR 就顯得麻煩。為了方便更新內容(拷貝/貼上),目前考慮使用 PHP + SQLite,而把 MySQL 排除在外。

PHP 目前最新的版本是 5.3.X,我租用的 PHP 空間為 5.1.6,雖然這個專案不會用到租用的空間,但為了可以通用,就會以 5.1.6 為預設版本。
用了 PHP5 的 SQLite 才知道原來它的版本是2。PHP 5.1.6 要使用 SQLite3 必須透過 PDO。PHP 5.3 之後的版本才有直接支援 SQLite3 的類別。SQLite2 有啥不好?其實沒什麼不好,只是個人用慣 SQLite Manager 了,而且用舊版心中總會掛念它是舊版,若要用新版的功能時,可能就悔不當初 :P

2010-11-20

承上篇「無法使用phpMyAdmin時的DB資料備份及回復」

sqlbuddy 試用了一下, 功能雖然較 phpMyAdmin 簡單許多, 但其實已經很夠用了 :)

FB 留言