繁体   English   中英

检查两个SQL表

[英]Check two SQL tables

我有2个MySQL表;

portal.campaignAccount_Relations

+------------+----------+---------+
| relationID | campaign | account |
+------------+----------+---------+
| 1          | 1        | 1       |
| 2          | 2        | 1       |
| 3          | 4        | 1       |
| 4          | 3        | 2       |
+------------+----------+---------+

portal.campaign_queue

+----+----------------------------+---------+
| id | title                      | deleted |
+----+----------------------------+---------+
| 1  | Lorem Ipsum Dolor Sit Amet | 0       |
| 2  | Lorem Ipsum Dolor Sit Amet | 0       |
| 3  | Lorem Ipsum Dolor Sit Amet | 1       |
| 4  | Lorem Ipsum Dolor Sit Amet | 0       |
+----+----------------------------+---------+

我想找到的所有行portal.campaignAccount_Relations其中`的deleted`领域portal.campaign_queue0的相关活动。

我是INNER JOIN MySQL函数的新手,无法找到对此类查询的支持。 我试过了:

SELECT campaignAccount_Relations.campaign, campaignAccount_Relations.account
FROM campaignAccount_Relations 
INNER JOIN campaign_queue 
    ON campaign_queue.deleted = 0 AND campaign_queue.id=campaignAccount_Relations.campaign

并得到了我一直在寻找的价值观。 这是正确/最有效的方法吗?

您的查询可以工作,但是与两个表都不相关的条件通常应该在WHERE而不是ON (例外是在进行外部联接时-辅助表上的条件必须在ON子句中)。

SELECT campaignAccount_Relations.campaign, campaignAccount_Relations.account
FROM campaignAccount_Relations 
INNER JOIN campaign_queue ON campaign_queue.id=campaignAccount_Relations.campaign
WHERE campaign_queue.deleted = 0

演示

您应该开始尝试不同的事物,这是学习的最佳方法。 这是我使用左联接为您提供的帮助:

SELECT * FROM portal.campaignAccount_Relations car
LEFT JOIN proal.campaign_que cq ON car.relationId = cq.id 
WHERE cq.deleted=0

或者也许您想要以下内容,不确定是哪一栏是您的广告系列关系栏...

SELECT * FROM portal.campaignAccount_Relations car
LEFT JOIN proal.campaign_que cq ON car.campaign = cq.id 
WHERE cq.deleted=0

从mysql.com:

在MySQL中,JOIN,CROSS JOIN和INNER JOIN是语法等效项(它们可以相互替换)

我没有测试过任何一个,因此您可能必须调整语法等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM