2012-04-09 71 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