1. 程式人生 > >mysql max函式不能用在where條件中的案例

mysql max函式不能用在where條件中的案例

案例背景:

  版主在"mysql表的字符集uft8轉換成gbk測試"一文中,blog位置

欄位最大長度等於22個字元的記錄,將max(char_length(CUSTOMER_NAME))=22直接放在where條件中,但執行報

錯。

(product)[email protected] [lots]> select CUSTOMER_NAME from t_order where max(char_length

(CUSTOMER_NAME))=22;
ERROR 1111 (HY000): Invalid use of group function

分析處理:
   上面提示分組函式的無效使用,需要另外找其它方法來實現需求,網上查詢,參考

  將SQL改成如下:

select CUSTOMER_NAME from (select CUSTOMER_NAME,max(char_length(CUSTOMER_NAME)) as maxlength from

t_order group by CUSTOMER_NAME) tmp where tmp.maxlength=22

 即正常返回結果。

相關推薦

mysql max函式不能where條件案例

案例背景:   版主在"mysql表的字符集uft8轉換成gbk測試"一文中,blog位置 欄位最大長度等於22個字元的記錄,將max(char_length(CUSTOMER_NAME))=22直接放在where條件中,但執行報 錯。 (product)[email&#

設置mysql在執行沒where條件的sql語句時提醒

RoCE water mark pro 是否 http images mysq ext 查看mysql是否開啟更新sql語句沒有where的檢測開關,on表示開啟,off表殼關閉 設置命令 通過執行沒有where的Sql語句來驗證設置mysql在執行沒where條件的sql

mysql update忘加where條件的操作恢復(模擬oracle閃回)

先準備資料: CREATE TABLE `student` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `name` varchar(10) NOT NULL DEFAULT '',   `class` var

警惕 MySql 更新 sql 的 WHERE 從句的 IN() 子查詢時出現的效能陷阱

mer_stage 表有 216423 條記錄,DDL:CREATE TABLE `mer_stage` ( `STAGE_ID` int(11) NOT NULL AUTO_INCREMENT, `MER_ID` int(11) NOT NULL, `MER_C

oracle如何在where條件寫日期?

sql如下: SELECT * FROM T_QUERY_LOG t WHERE t.CREATEDATE >= to_date('2016-7-1','yyyy-mm-dd') AND  t.

oracle 在where條件寫case when

業務:當狀態等於2時判斷表中的userid 是否和當前登入人id相等 SELECT  * FROM  tbname t WHERE  1=1AND  (CASE  WHEN  t.vc_state = '2'  THEN  t.vc_userId ELSE  當前登入人id

在Linq的Where條件,如何優雅的進行型別轉換?

大家應該都知道Int32.Parse()是不安全,但有時可能會有僥倖心理,而我正是在這樣的心理驅使下,這麼幹了。相關場景簡化處理後的程式碼,如下。 List<BookInfo> bookLst = new List<BookInfo>();

case when 寫在where條件

<pre name="code" class="sql">select datas.id, datas.name, datas.memo, to_char(datas.create_date, 'yyyy-mm-dd h

SQLServer2008 在where條件使用CASE WHEN

where  (case when LEN(A.startMonth)=1 and A.startMonth!=0 then cast((CAST(startYear as varchar(4))+'0'+cast(A.startMonth as varchar(1))) as date)        wh

oracle sql 語句where條件 1=1 是什麼意思

是為了後面附加and ...方便程式邏輯處理用的, 要不然你就得稍微複雜一點兒處理: 有where條件。。。 沒有where條件。。。 1=1 是永恆成立的,意思無條件的,也就是說在SQL語句裡有沒有這個1=1都可以。 這個1=1常用於應用程式根據使用者選擇項的不

where 條件 使用 instr 替代 in

select  * from  expense  ee  where ee.pro_ype = processType  and ee.cost_type in ( SELECT tt.value FROM t_enum tt where  tt.enum_name =

Mysql資料庫查詢符合where條件的某幾條結果sql語句

select * from tbl_files where p_id = ?  and file_type = ?  order by time desc limit ?,?  其中,where、or

sql優化(where條件的''in''在邏輯上相當於............)

         sql優化的實質就是在結果正確的前提下,用優化器可以識別的語句,充分利用索引,減少表掃描的I/O次數,儘量避免表搜尋的發生。         select count(*) from stuff where id_no in(''0'',''1'')(2

Mysqlwhere條件一個單引號引發的性能損耗

電商 str target mysq color 日常 location 速度 avi 日常寫SQL中可能會有一些小細節忽略了導致整個sql的性能下降了好幾倍甚至幾十倍,幾百倍。以下這個示例就是mysql語句中的一個單引號(‘‘)引發的性能耗損,我相信很多朋友都遇到過,甚至

mysql使用case when 做where條件篩選表記錄

平時我們專案中經常用到 where  欄位名=值  來篩選查詢結果,但實際也會遇到這樣的情況,如果表中某個欄位code的值是“_1”結尾的,那麼就查全部,否則,根據輸入的引數查詢。 這時 case when 就派上用途了: select * from ta

Mysql Left/Right join on後面and和where條件查詢的差異-Mysql SQL運算子是有優先順序

一、Mysql中Left/Right join on後面and和where條件查詢的差異 1、建兩張測試表,一張商戶定義表、一張商戶操作狀態明細表 1)商戶定義表 CREATE TABLE hope.merchant (  MERCHANT_id varchar(100) COLLATE ut

建立一個物件陣列,內放5個學生的資料(學號,成績),指向物件的指標做函式引數,在max函式找出5個學生成績最高者,並輸出其學號。

原始碼如下:主要注意友元函式的宣告 #include <iostream> #include <string> using namespace std; class Student { public:     Student(string n,flo

一直PDO,PHP操作MYSQL資料庫常用函式還記得不

1、mysql_connect()-建立資料庫連線格式: resource mysql_connect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]])

mysql儲存過程使用select count(*) into 變數名 from +表+ where條件的用法

select count(*) into v_count from dual where userid=2;此語句的意思就是根據where條件查詢dual表,得到的行數存入變數v_count中(給變數賦值) 只能在儲存過程中編寫這樣的語句?如果在mysql的sql語句中編寫

oraclewhere條件in這樣子查詢後變慢

今日開發一個需求,其中由於需求變態,寫了一個挺複雜的sql,在本地測試環境看不出問題,但到了生產就變得非常慢(由於表資料量比較大),把sql粘貼出來執行了一下大概要42秒...我滴天 我寫的sql大概是這個樣子的(大概描繪下)TABLE_A表資料量大概200w,其中一些關鍵