所以问题是问这个:
列出Johnson's Department Store下订单的订单号和订单日期,但不包含Gas Range的订单行和订单行。
以下是我已经尝试过的以及它一直给我的错误。所以我知道我应该选择ORDER_NUM和ORDER_DATE因为它要求列出它。我从ORDERS出来,因为那是ORDER_NUM和ORDER_DATE的所在,我放了一部分,因为那是我唯一可以在插入数据时找到Gas Range的地方。 608是Johnson's Department Store的客户编号,最后一行是我无法弄清楚的。怎么说描述不含气体范围?
SELECT ORDER_NUM, ORDER_DATE
-> FROM ORDERS, PART
-> WHERE CUSTOMER_NUM='608'
-> AND PART.DESCRIPTION NOT IN 'Gas Range';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Gas Range'' at line 4
答案 0 :(得分:3)
NOT IN
无法正常运行。 (它与一组值一起使用)
您需要PART.DESCRIPTION NOT LIKE '%Gas Range%'
答案 1 :(得分:1)
使用NOT LIKE而不是NOT IN
SELECT ORDER_NUM, ORDER_DATE
-> FROM ORDERS, PART
-> WHERE orders.id = part.order_id and CUSTOMER_NUM='608'
-> AND PART.DESCRIPTION NOT LIKE '%Gas Range%';
IN运算符允许您在WHERE子句中指定多个值。
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
在WHERE子句中使用LIKE运算符来搜索列中的指定模式。
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
"%" sign用于在模式之前和之后定义通配符(缺少字母)。
答案 2 :(得分:0)
您可以使用运算符<&gt ;. 我还注意到两个表之间没有连接条件。
SELECT ORDER_NUM, ORDER_DATE
-> FROM ORDERS, PART
-> WHERE CUSTOMER_NUM='608'
-> AND PART.DESCRIPTION <> 'Gas Range';