2009-11-13 65 views
1

你知道什麼是一些很酷的SQL短手?SQL查詢快捷鍵

例如,這是我今天學到的是,你可以通過索引指定組:

SELECT col1, col2 FROM table GROUP BY 2 

這將組通過COL2

+1

這樣的問題應該是社區wiki – 2009-11-13 04:35:36

+0

我不認爲所有SQL實現都支持group by的序號。 – 2009-11-13 05:46:41

+0

不是一個捷徑:它很危險。並且不支持SQL Server至少有 – gbn 2009-11-13 06:57:15

回答

2

序數 - 使用對在這個地方一個參考號碼SELECT子句 - 可以在GROUP BY和ORDER BY子句中使用。但我不推薦他們,因爲如果訂單更改,將會影響您的查詢。

表格別名是必須的。 IE:

SELECT 
    FROM THIS_IS_MY_UNGODLY_TABLE_NAME timutn 

...意味着我可以用timutn,而當我想不是鍵入完整的表名/需要明確列來自哪個表的。當你必須自己加入一個表時,以及誰真的想要始終鍵入整個表名?

真正讓我進入表別名的是,如果您使用表別名,某些SQL IDE具有足夠智能的智能感知以僅爲該表提供列的列表。

+0

+1,我一直使用別名。 – 2009-11-13 04:43:23

+0

SQL Server中沒有GROUP BY。 – gbn 2009-11-13 06:55:51

2

如果你的條件爲您的查詢不知道,當你實際運行它,WHERE 1=1是有用的

例如

$query = 'SELECT * FROM table '; 

<?php if ($something) { ?> 
$sql.= 'WHERE something = ' . $variable; 
<?php } else { ?> 
$sql.= 'WHERE something = ' . $another; 
<?php } ?> 

如果有很多分支正在進行,它可能是這樣的痛苦(不,我不相信構建查詢字符串,但這只是爲了示例)。

更簡單的方法:

$query = 'SELECT * FROM table WHERE 1=1 '; 

<?php if ($something) { ?> 
$sql.= 'AND something = ' . $variable; 
<?php } else { ?> 
$sql.= 'AND something = ' . $another; 
<?php } ?> 

當然,我可能會使用一個包裝/類具有where方法中,我可以指定條件。

+0

你能解釋一下你爲什麼使用它以及它給了什麼好處? – gbn 2009-11-13 06:54:50

+0

啊我明白了。所以你可以更容易地在客戶端代碼中建立SQL語句,希望你不要讓自己開放SQL注入... ;-) – gbn 2009-11-13 07:31:21

+0

+1:在PHP中,我使用implode函數構建where語句,然後使用作爲邏輯運算符的分隔符ex: $ q =「select * from mytable where」.implode('and',$ _ where); 顯然$ _where必須是一個數組,您可能還需要通過在添加where子句之前檢查sizeof()來創意:) – 2013-12-21 19:30:23