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不为空,则为“是”,否则为“否”