下面列出了 2 个表:
+-------------+-----------+--------------+-------------------------------+
| v3_customer |
+-------------+-----------+--------------+-------------------------------+
| customer_id | firstname | lastname | email |
+-------------+-----------+--------------+-------------------------------+
| 1 | Piet | Pizza | piet.pizza@example.com |
| 2 | Klaas | Hein | klaas.hein@example.com |
| 3 | Henk | Crowdcontrol | henk.crowdcontrol@example.com |
+-------------+-----------+--------------+-------------------------------+
+-------------+-------------+---------------+
| v3_customer_activity |
+-------------+-------------+---------------+
| activity_id | customer_id | key |
+-------------+-------------+---------------+
| 1 | 1 | login |
| 2 | 1 | order_account |
| 3 | 2 | login |
+-------------+-------------+---------------+
我想要的是选择所有尚未登录的客户(注意 v3_customer_activity
中的 login 键)。所以在这种情况下,这将是具有 customer_id: 3
我正在使用 mysql 数据库。
我试过使用以下查询:
SELECT DISTINCT v3_customer.customer_id, v3_customer.firstname, v3_customer.lastname, v3_customer.email FROM `v3_customer` JOIN v3_customer_activity ON v3_customer.customer_id = v3_customer_activity.customer_id WHERE v3_customer.customer_id != (SELECT v3_customer_activity.customer_id FROM v3_customer_activity)
希望它能在子查询中找到的行之间进行迭代。 这导致错误告诉我子查询可能不包含多行。
长话短说
我想要的是从 v3_customer
中检索未列在表 v3_customer_activity
中的每个客户
最佳答案
试试这个:
select v3_customer.* from v3_customer
left join v3_customer_activity on v3_customer.customer_id=v3_customer_activity.customer_id
where v3_customer_activity.customer_id is null;
用v3_customer_activity
左连接v3_customer
表,过滤不匹配的记录。
关于mysql - 从 mysql 表中检索所有未登录的用户(SQL 查询),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33799361/