Mysql 检查值是否存在于另一个(联接)表中,并相应地在结果中填充列
Mysql 检查值是否存在于另一个(联接)表中,并相应地在结果中填充列,mysql,sql,Mysql,Sql,/* Table Sales */ CREATE TABLE sales ( id int auto_increment primary key, campaign VARCHAR(255), quantity INT ); INSERT INTO sales (campaign, quantity) VALUES ("C001", "125"), ("C002", "300"), (&q
/* Table Sales */
CREATE TABLE sales (
id int auto_increment primary key,
campaign VARCHAR(255),
quantity INT
);
INSERT INTO sales
(campaign, quantity)
VALUES
("C001", "125"),
("C002", "300"),
("C003", "700"),
("C004", "900"),
("C005", "600");
/* Table Tranches */
CREATE TABLE tranches (
id int auto_increment primary key,
campaign VARCHAR(255),
tranches VARCHAR(255),
quantity INT
);
INSERT INTO tranches
(campaign, tranches, quantity)
VALUES
("C001", "t1", "125"),
("C001", "t2", "300"),
("C001", "t3", "700"),
("C003", "t1", "600"),
("C003", "t2", "465");
SELECT distinct
s.campaign,
s.quantity,
CASE WHEN c.campaign is not null THEN "yes" ELSE "no" END AS exists_in_tranches
FROM sales s
LEFT JOIN tranches c ON c.campaign = s.campaign
预期结果:
campaign quantity exists_in_tranches
C001 125 yes
C002 300 no
C003 700 yes
C004 900 no
C005 600 no
在abvoe示例中,我有两个名为
sales
和tranches
的表正如您在表
sales
中看到的一些活动
在表部分
中确实有一个条目。有些人则不然在查询结果中的
列exists\u In_tranches
中,我想检查表sales
中的某个活动是否存在于表tranches
中,如果存在,则应描述为yes
,否则应为no
大概是这样的:
SELECT
s.campaign,
s.quantity,
(CASE WHEN exists in table tranches THEN "yes" ELSE "no" END) AS exists_in_tranches
FROM sales s
LEFT JOIN tranches c ON c.campaign = s.campaign
GROUP BY 1;
如何修改查询
以获得预期结果?您可以尝试以下操作-检查是否不为空
,并且您不需要添加group by子句,因为您没有使用任何聚合函数-
/* Table Sales */
CREATE TABLE sales (
id int auto_increment primary key,
campaign VARCHAR(255),
quantity INT
);
INSERT INTO sales
(campaign, quantity)
VALUES
("C001", "125"),
("C002", "300"),
("C003", "700"),
("C004", "900"),
("C005", "600");
/* Table Tranches */
CREATE TABLE tranches (
id int auto_increment primary key,
campaign VARCHAR(255),
tranches VARCHAR(255),
quantity INT
);
INSERT INTO tranches
(campaign, tranches, quantity)
VALUES
("C001", "t1", "125"),
("C001", "t2", "300"),
("C001", "t3", "700"),
("C003", "t1", "600"),
("C003", "t2", "465");
SELECT distinct
s.campaign,
s.quantity,
CASE WHEN c.campaign is not null THEN "yes" ELSE "no" END AS exists_in_tranches
FROM sales s
LEFT JOIN tranches c ON c.campaign = s.campaign
例如:
如果c.campaign不为空,则为“是”,否则为“否”
?