Mysql 如何使用SQL子查询中的WHERE EXISTS?
我需要找到2020年3月在维多利亚大道一家酒吧点过酒的不同饮酒者 以下是我试图从中检索数据的表:Mysql 如何使用SQL子查询中的WHERE EXISTS?,mysql,sql,exists,Mysql,Sql,Exists,我需要找到2020年3月在维多利亚大道一家酒吧点过酒的不同饮酒者 以下是我试图从中检索数据的表: CREATE TABLE ORDERS( /* Drinkers visit pubs and consumes drinks */ DRINKER VARCHAR(30) NOT NULL, /* Drinker name */ PUB VARCHAR(30) NOT NULL, /* Pub name */ ODATE DATE N
CREATE TABLE ORDERS( /* Drinkers visit pubs and consumes drinks */
DRINKER VARCHAR(30) NOT NULL, /* Drinker name */
PUB VARCHAR(30) NOT NULL, /* Pub name */
ODATE DATE NOT NULL, /* Order date */
DRINK VARCHAR(30) NOT NULL, /* Drink name */
DRINK_NO DECIMAL(2) NOT NULL, /* A sequence number of a drink */
CONSTRAINT ORDERS_PKEY PRIMARY KEY(DRINKER, PUB, ODATE, DRINK, DRINK_NO),
CONSTRAINT ORDERS_FKEY1 FOREIGN KEY(PUB, DRINK) REFERENCES SERVES(PUB, DRINK),
CONSTRAINT ORDERS_FKEY2 FOREIGN KEY(DRINKER) REFERENCES DRINKERS(DRINKER) );
CREATE TABLE LOCATED( /* Pubs have locations */
PUB VARCHAR(30) NOT NULL, /* Pub name */
STREET VARCHAR(30) NOT NULL, /* Street name */
BLDG_NO DECIMAL(4) NOT NULL, /* Building number */
CONSTRAINT LOCATED_PKEY PRIMARY KEY(PUB) );
以下是我迄今为止的SELECT声明:
SELECT DISTINCT DRINKER
FROM ORDERS
WHERE EXISTS (SELECT PUB
FROM LOCATED
WHERE STREET = 'VICTORIA AVE.'
AND ORDERS.ODATE >= STR_TO_DATE('01-MAR-2020','%d-%M-%Y')
AND ORDERS.ODATE <= STR_TO_DATE('01-MAR-2020','%d-%M-%Y'));
子查询需要与其WHERE子句中的主查询相关联
我只允许使用存在与否EXISTS@mechanical_meat是的,很抱歉那只是个打字错误
SELECT DISTINCT DRINKER
FROM ORDERS
WHERE EXISTS (SELECT PUB
FROM LOCATED
WHERE LOCATED.PUB = ORDERS.PUB
AND STREET = 'VICTORIA AVE.'
AND ORDERS.ODATE >= STR_TO_DATE('01-MAR-2020','%d-%M-%Y')
AND ORDERS.ODATE <= STR_TO_DATE('31-MAR-2020','%d-%M-%Y'));