我有一個包含77個字段的MySQL表。其中許多人開始使用相同的前綴「mt3_」。 而不是寫大家都出去了,我想用這個語法,只選擇表中以「mt3_」啓動這些領域:選擇在MySQL中具有共同開始短語的所有字段
SELECT tablename.mt3_* from tablename;
然而,這並不工作...什麼是正確的語法做這個?
謝謝。
我有一個包含77個字段的MySQL表。其中許多人開始使用相同的前綴「mt3_」。 而不是寫大家都出去了,我想用這個語法,只選擇表中以「mt3_」啓動這些領域:選擇在MySQL中具有共同開始短語的所有字段
SELECT tablename.mt3_* from tablename;
然而,這並不工作...什麼是正確的語法做這個?
謝謝。
你不能直接這樣做,但你可以向MySQL索取該表中的列名,並在WHERE
語句中使用通配符%
進行過濾,就像這樣;你可以運行另一個查詢,這些結果的循環(我猜你正在使用PHP和mysqli);然後,
while($row = $result->fetch_assoc()) {
$cols[] = $row['column_name'];
}
$colnames = explode(",",$cols);
$sql = "SELECT $colnames FROM tablename"
希望這會有所幫助。
我沒有使用PHP,但是使用Python,儘管在這項工作中我直接用mysql來做所有事情。我理解第一部分。我可以在mysql中使用第二部分,或者我會怎麼做 - 用PHP我猜...? – oaklander114 2014-10-22 02:36:54
啊Python ...'「SELECT * FROM tablename WHERE」+''.join(['%s = 1'%name for columns in columns]) – worldofjr 2014-10-22 02:43:34
我不認爲沒有使用某種程序語言(或者只是輸入列名)。 – worldofjr 2014-10-22 02:58:06
沒有動態SQL沒有辦法做到這一點,老實說,我不能推薦做這樣的事情。
如果你足夠關心SELECT
只有某些字段,那麼你也可能足夠關心在乎的最佳實踐,這是一個best practice指定所有你想一個SELECT
查詢中的字段。
使用SELECT *
進行單個快速檢索。如果你實際上是編碼的東西,然後花時間來指定你想要的領域。
沒有。選擇所有列或命名您想要選擇的列 – 2014-10-22 01:03:10
@juergend有一種方法,現在就寫一個答案。 – worldofjr 2014-10-22 01:04:03
@worldofjr動態SQL? – ForguesR 2014-10-22 01:04:48