Mysql 代码:1064。您的SQL语法有错误;'错误代码:158在第13行对本机函数“concat”的调用中参数不正确

Mysql 代码:1064。您的SQL语法有错误;'错误代码:158在第13行对本机函数“concat”的调用中参数不正确,mysql,Mysql,我的代码如下: SELECT CONCAT("A purchase with the purchase ID of ", PURCHASE.PurchaseID, " is an online purchase of type ",ONLINEPURCHASE.OnlineType, " and also a walkin purchase of location ", WALIINPURCHASE.ShopLocation )

我的代码如下:

SELECT CONCAT("A purchase with the purchase ID of ", PURCHASE.PurchaseID,
 " is an online purchase of type ",ONLINEPURCHASE.OnlineType, " 
 and also a walkin purchase of location ", WALIINPURCHASE.ShopLocation ) 
 from (PURCHASE, ONLINEPURCHASE,WALIKINPURCHASE)
 where (PURCHASE.PurchaseID=ONLINEPURCHASE.PurchaseID 
 and PURCHASE.PurchaseID=WALKINPURCHASE.PurchaseID);
-- CREATE TABLE AUTHOR
CREATE TABLE AUTHOR (
    AuthorID        VARCHAR(12)     NOT NULL,
    Name            VARCHAR(50)     NOT NULL,
CONSTRAINT AUTHOR_PKEY PRIMARY KEY (AuthorID)
);

-- CREATE TABLE BOOK
CREATE TABLE BOOK (
    BookID          VARCHAR(12)     NOT NULL,
    Title           VARCHAR(80)     NOT NULL,
    Price           DECIMAL(4,2)    NOT NULL,
CONSTRAINT BOOK_PKEY PRIMARY KEY (BookID)
);

-- CREATE TABLE BOOKAUTHOR
CREATE TABLE BOOKAUTHOR (
    BookID          VARCHAR(12)     NOT NULL,
    AuthorID        VARCHAR(12)     NOT NULL,
CONSTRAINT BOOKAUTHOR_PKEY PRIMARY KEY (BookID, AuthorID),
CONSTRAINT BOOKAUTHOR_FKEY1 FOREIGN KEY (BookID) REFERENCES BOOK (BookID),
CONSTRAINT BOOKAUTHOR_FKEY2 FOREIGN KEY (AuthorID) REFERENCES AUTHOR (AuthorID)
);

-- CREATE TABLE CUSTOMER
CREATE TABLE CUSTOMER (
    CustomerID      VARCHAR(12)     NOT NULL,
    Name            VARCHAR(50)     NOT NULL,
CONSTRAINT CUSTOMER_PKEY PRIMARY KEY (CustomerID)
);

-- CREATE TABLE PURCHASE
CREATE TABLE PURCHASE (
    PurchaseID          VARCHAR(12)     NOT NULL,
    PurchaseQty         DECIMAL(4)      NOT NULL,
    PurchaseDate        DATE            NOT NULL,
    BookID          VARCHAR(12)     NOT NULL,
    CustomerID      VARCHAR(12)     NOT NULL,
CONSTRAINT PURCHASE_PKEY PRIMARY KEY (PurchaseID),
CONSTRAINT PURCHASE_FKEY1 FOREIGN KEY (BookID) REFERENCES BOOK (BookID),
CONSTRAINT PURCHASE_FKEY2 FOREIGN KEY (CustomerID) REFERENCES CUSTOMER (CustomerID)
);

-- CREATE TABLE ONLINEPURCHASE
CREATE TABLE ONLINEPURCHASE (
    PurchaseID      VARCHAR(12)     NOT NULL,
    OnlineType      VARCHAR(12)     NOT NULL,
CONSTRAINT ONLINEPURCHASE_PKEY PRIMARY KEY (PurchaseID),
CONSTRAINT ONLINEPURCHASE_FKEY1 FOREIGN KEY (PurchaseID) REFERENCES PURCHASE (PurchaseID)
);

-- CREATE TABLE WALKINPURCHASE
CREATE TABLE WALKINPURCHASE (
    PurchaseID      VARCHAR(12)     NOT NULL,
    ShopLocation    VARCHAR(50)     NOT NULL,
CONSTRAINT WALKINPURCHASE_PKEY PRIMARY KEY (PurchaseID),
CONSTRAINT WALKINPURCHASE_FKEY1 FOREIGN KEY (PurchaseID) REFERENCES PURCHASE (PurchaseID)
);
我正在尝试执行脚本查找数据库中违反以下一致性约束的所有案例。 “作为在线购买的购买不应是预约购买” 脚本必须将一致性约束的验证结果列为一个单列表,并将以下消息列为以下行。 采购ID为的采购是类型为的在线采购,也是位置的walkin采购

我的数据库创建如下:

SELECT CONCAT("A purchase with the purchase ID of ", PURCHASE.PurchaseID,
 " is an online purchase of type ",ONLINEPURCHASE.OnlineType, " 
 and also a walkin purchase of location ", WALIINPURCHASE.ShopLocation ) 
 from (PURCHASE, ONLINEPURCHASE,WALIKINPURCHASE)
 where (PURCHASE.PurchaseID=ONLINEPURCHASE.PurchaseID 
 and PURCHASE.PurchaseID=WALKINPURCHASE.PurchaseID);
-- CREATE TABLE AUTHOR
CREATE TABLE AUTHOR (
    AuthorID        VARCHAR(12)     NOT NULL,
    Name            VARCHAR(50)     NOT NULL,
CONSTRAINT AUTHOR_PKEY PRIMARY KEY (AuthorID)
);

-- CREATE TABLE BOOK
CREATE TABLE BOOK (
    BookID          VARCHAR(12)     NOT NULL,
    Title           VARCHAR(80)     NOT NULL,
    Price           DECIMAL(4,2)    NOT NULL,
CONSTRAINT BOOK_PKEY PRIMARY KEY (BookID)
);

-- CREATE TABLE BOOKAUTHOR
CREATE TABLE BOOKAUTHOR (
    BookID          VARCHAR(12)     NOT NULL,
    AuthorID        VARCHAR(12)     NOT NULL,
CONSTRAINT BOOKAUTHOR_PKEY PRIMARY KEY (BookID, AuthorID),
CONSTRAINT BOOKAUTHOR_FKEY1 FOREIGN KEY (BookID) REFERENCES BOOK (BookID),
CONSTRAINT BOOKAUTHOR_FKEY2 FOREIGN KEY (AuthorID) REFERENCES AUTHOR (AuthorID)
);

-- CREATE TABLE CUSTOMER
CREATE TABLE CUSTOMER (
    CustomerID      VARCHAR(12)     NOT NULL,
    Name            VARCHAR(50)     NOT NULL,
CONSTRAINT CUSTOMER_PKEY PRIMARY KEY (CustomerID)
);

-- CREATE TABLE PURCHASE
CREATE TABLE PURCHASE (
    PurchaseID          VARCHAR(12)     NOT NULL,
    PurchaseQty         DECIMAL(4)      NOT NULL,
    PurchaseDate        DATE            NOT NULL,
    BookID          VARCHAR(12)     NOT NULL,
    CustomerID      VARCHAR(12)     NOT NULL,
CONSTRAINT PURCHASE_PKEY PRIMARY KEY (PurchaseID),
CONSTRAINT PURCHASE_FKEY1 FOREIGN KEY (BookID) REFERENCES BOOK (BookID),
CONSTRAINT PURCHASE_FKEY2 FOREIGN KEY (CustomerID) REFERENCES CUSTOMER (CustomerID)
);

-- CREATE TABLE ONLINEPURCHASE
CREATE TABLE ONLINEPURCHASE (
    PurchaseID      VARCHAR(12)     NOT NULL,
    OnlineType      VARCHAR(12)     NOT NULL,
CONSTRAINT ONLINEPURCHASE_PKEY PRIMARY KEY (PurchaseID),
CONSTRAINT ONLINEPURCHASE_FKEY1 FOREIGN KEY (PurchaseID) REFERENCES PURCHASE (PurchaseID)
);

-- CREATE TABLE WALKINPURCHASE
CREATE TABLE WALKINPURCHASE (
    PurchaseID      VARCHAR(12)     NOT NULL,
    ShopLocation    VARCHAR(50)     NOT NULL,
CONSTRAINT WALKINPURCHASE_PKEY PRIMARY KEY (PurchaseID),
CONSTRAINT WALKINPURCHASE_FKEY1 FOREIGN KEY (PurchaseID) REFERENCES PURCHASE (PurchaseID)
);

您的表名错误。在CONCAT函数中,您将其称为WALIINPURCHASE,在FROM中,您将其称为WALIKINPURCHASE。见下文:

从…,…,瓦利金采购

以及:

CONCAT…,,,,,,,,WALIINPURCHASE.ShopLocation

根据您的创建SQL,正确的方法是WALKINPURCHASE


将其更正为CONCAT上的WALKINPURCHASE和FROM可以解决您的问题。

您是否将此表的所有引用更改为WALKINPURCHASE?是选择CONCAT购买,购买ID为PurchaseID,是类型为ONLINEPURCHASE.OnlineType的在线购买,也是位置为的walkin购买,WALKINPURCHASE.ShopLocation from PURCHASE、Online PURCHASE、WALKINPURCHASE where PURCHASE.PurchaseID=Online PurchaseID和PurchaseID=WALKINPURCHASE.PurchaseID;我运行了您的CREATESQL,然后执行了SELECT。一切正常,没有错误。请确保数据库中的表名正确无误,并且没有输入错误,好吗?