2012-04-09 61 views
0

我只是MySQL的新手,我想寫一條SELECT語句,它返回客戶的ID和客戶名稱(字母順序),以便住在印第安納州,俄亥俄州,密歇根州和伊利諾斯州的客戶以及名稱以字母A或B開頭。MySQL基本命令

這是使用DESCRIBE CUSTOMER_TBL的CUSTOMER_TBL結構;

Name       Null?      Type 
    ------------------------------------------------------------- 
    CUST_ID      NOT NULL     VARCHAR2(10) 
    CUST_NAME     NOT NULL     VARCHAR2(30) 
    CUST_ADDRESS     NOT NULL     VARCHAR2(20) 
    CUST_CITY     NOT NULL     VARCHAR2(12) 
    CUST_STATE     NOT NULL     CHAR(2) 
    CUST_ZIP      NOT NULL     CHAR2(5) 
    CUST_PHONE            NUMBER(10) 
    CUST_FAX            NUMBER(10) 

這是我的解決方案,我只需要知道我是否正確。感謝

SELECT CUST_ID,CUST_NAME FROM CUSTOMER_TBL 
    WHERE IN('Indiana','Ohio','Ohio','Michigan','Illinois') AND WHERE LIKE(A% OR B%) 
    ORDER BY CUST_ID,CUST_NAME 
+2

「在哪裏」的條款是完全錯誤的,查詢方式簡單學習語法。我只是在這裏學習「http://www.w3schools.com/sql/sql_where.asp」。這會比給你答案 – gout 2012-04-09 11:59:45

+1

...更好,如果你需要了解** w3schools.com **本身,你需要去這裏:** http://w3fools.com/** – 2012-04-09 12:04:50

+0

先所有清楚您的基本知識,您錯過了在哪裏寫列名稱 – 2012-04-09 12:06:38

回答

0

CUST_STATECHAR(2)列,所以我認爲它包含狀態代碼,而不是國家的名字。因此,而不是印第安納州,俄亥俄州等你應該使用狀態代碼:

SELECT CUST_ID, CUST_NAME 
FROM CUSTOMER_TBL 
WHERE CUST_STATE IN ('IN','OH','MI','IL') AND (
    CUST_NAME LIKE 'A%' OR 
    CUST_NAME LIKE 'B%' 
) 
ORDER BY CUST_NAME 

正確的情況下,國家代碼,他們都錯了。

+0

您是否測試了它? :) – deadrunk 2012-04-09 11:59:12

+0

@deadrunk:我注意到了錯字(如果這就是你所指的)並修正了它。 – 2012-04-09 12:03:41

+0

是的,我在說第一個「喜歡」的表達 – deadrunk 2012-04-09 12:04:52

1
SELECT CUST_ID,CUST_NAME FROM CUSTOMER_TBL 
WHERE CUST_STATE IN('Indiana','Ohio','Ohio','Michigan','Illinois') AND (CUST_NAME LIKE 'A%' OR CUST_NAME LIKE 'B%') 
ORDER BY CUST_ID,CUST_NAME 
0

你有幾件事情錯在你的查詢:

  • 你應該先試試它,而不是隻要求是正確與否。
  • 當嵌套條件在WHERE聲明中時,請不要重複wherelelef所在的位置。
  • 您應該提及您嘗試匹配條件的列。

所以,你的查詢應該是這樣的:

SELECT CUST_ID, CUST_NAME 
FROM CUSTOMER_TBL 
WHERE CUSTOMER_City IN('Indiana','Ohio','Ohio','Michigan','Illinois') 
    AND (CUST_NAME LIKE 'A%' OR CUST_NAME LIKE 'B%') 
ORDER BY CUST_ID,CUST_NAME