0

我只是 MySQL 的新手,我想编写一个 SELECT 语句,返回居住在印第安纳州、俄亥俄州、密歇根州和伊利诺伊州的客户的客户 ID 和客户名称(字母顺序),其名称以字母 A 开头或 B。

这是使用 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
4

3 回答 3

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
于 2012-04-09T11:57:25.993 回答
0

CUST_STATE是一CHAR(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

纠正州代码,以防错误。

于 2012-04-09T11:58:18.600 回答
0

您的查询中有几处错误:

  • 您应该先尝试一下,而不仅仅是问它是否正确。
  • WHERE语句中嵌套条件时,不要重复 where itslef。
  • 您应该提及您尝试与条件匹配的列。

因此,您的查询应如下所示:

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
于 2012-04-09T11:58:42.437 回答