在SQL中引用两个表?

时间:2016-11-02 18:37:57

标签: mysql sql

所以问题是问这个:

列出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

3 个答案:

答案 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';