[英]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_queue
是0
的相关活动。
我是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.