我如何从 table 中的两个查询中获取公共值并将其与 MySql 中的另一个 table 连接?
How I get common values from two query in a table and join it with another table in MySql?
我有两个 table。一个是 订单 ,另一个是 用户 。我想要 运行 关于 orders table 的两个不同查询,并希望获得共同的值并将其与 users table.
命令
======
+----+--------+------------+------------+-------- ------+
|编号 | user_id | receive_id | arrival_id | departure_id |
+----+--------+------------+------------+-------- ------+
| 1 | 1 | 1 |空 | 5 |
+----+--------+------------+------------+-------- ------+
| 2 | 2 | 1 | 3 | 6 |
+----+--------+------------+------------+-------- ------+
| 3 | 3 | 1 |空 | 7 |
+----+--------+------------+------------+-------- ------+
| 4 | 1 | 3 | 5 |空 |
+----+--------+------------+------------+-------- ------+
| 5 | 3 | 3 | 6 |空 |
+----+--------+------------+------------+-------- ------+
| 6 | 4 | 3 | 7 |空 |
+----+--------+------------+------------+-------- ------+
| 7 | 1 | 4 | 7 | 9 |
+----+--------+------------+------------+-------- ------+
用户
=====
+----+----------+
|编号 |姓名 |
+----+----------+
| 1 |肖恩 |
+----+----------+
| 2 |拉布 |
+----+----------+
| 3 |阿莎 |
+----+----------+
第一次查询..
SELECT DISTINCT user_id from orders where receive_id = 1 and departure_id != 'null'
它的结果将是..
1 2 3
第二次查询..
SELECT DISTINCT user_id from orders where receive_id = 3 and arrival_id != 'null'
它的结果将是..
1 3 4
我想从这些查询中获取通用值
那是 ..
1 3
当我将它加入用户 table 时,结果将是
_id__name__arrival_id__departure_id
1 Shaon 无效 5
3 阿莎无效 7
但是现在想看。。
_id__name__arrival_id__departure_id
1 邵 5 5
3 阿莎 6 7
在 arrival_id 行上的值来自哪里
receive_id = 3 arrival_id 与 user_id 不同
我认为代码会像下面这样。但它不起作用。
SELECT DISTINCT user_id from orders where receive_id = 1 and departure_id != 'null'
COMMON
SELECT DISTINCT user_id from orders where receive_id = 3 and arrival_id != 'null'
JOIN users on (users.id = orders.user_id)
SELECT DISTINCT user_id from orders JOIN
users on (users.id = orders.user_id) where receive_id = 3 and
arrival_id != 'null' AND user_id IN (SELECT DISTINCT user_id from
orders where receive_id = 1 and departure_id != 'null');
您可以使用此查询来获取记录
试试这个查询,
select orders.id, users.id from orders inner join users
on orders.user_id = users.id
通过将一个查询作为另一个查询的子查询,您将获得所需的内容。
像这样,
SELECT DISTINCT user_id from orders
JOIN users on (users.id = orders.user_id)
where receive_id = 1 and departure_id != 'null'
and user_id in (SELECT DISTINCT user_id from orders where receive_id = 3 and arrival_id != 'null')
希望对您有所帮助。
我有两个 table。一个是 订单 ,另一个是 用户 。我想要 运行 关于 orders table 的两个不同查询,并希望获得共同的值并将其与 users table.
命令 ====== +----+--------+------------+------------+-------- ------+ |编号 | user_id | receive_id | arrival_id | departure_id | +----+--------+------------+------------+-------- ------+ | 1 | 1 | 1 |空 | 5 | +----+--------+------------+------------+-------- ------+ | 2 | 2 | 1 | 3 | 6 | +----+--------+------------+------------+-------- ------+ | 3 | 3 | 1 |空 | 7 | +----+--------+------------+------------+-------- ------+ | 4 | 1 | 3 | 5 |空 | +----+--------+------------+------------+-------- ------+ | 5 | 3 | 3 | 6 |空 | +----+--------+------------+------------+-------- ------+ | 6 | 4 | 3 | 7 |空 | +----+--------+------------+------------+-------- ------+ | 7 | 1 | 4 | 7 | 9 | +----+--------+------------+------------+-------- ------+
用户 ===== +----+----------+ |编号 |姓名 | +----+----------+ | 1 |肖恩 | +----+----------+ | 2 |拉布 | +----+----------+ | 3 |阿莎 | +----+----------+
第一次查询..
SELECT DISTINCT user_id from orders where receive_id = 1 and departure_id != 'null'
它的结果将是.. 1 2 3
第二次查询..
SELECT DISTINCT user_id from orders where receive_id = 3 and arrival_id != 'null'
它的结果将是.. 1 3 4
我想从这些查询中获取通用值
那是 .. 1 3 当我将它加入用户 table 时,结果将是 _id__name__arrival_id__departure_id 1 Shaon 无效 5 3 阿莎无效 7 但是现在想看。。 _id__name__arrival_id__departure_id 1 邵 5 5 3 阿莎 6 7 在 arrival_id 行上的值来自哪里 receive_id = 3 arrival_id 与 user_id 不同 我认为代码会像下面这样。但它不起作用。
SELECT DISTINCT user_id from orders where receive_id = 1 and departure_id != 'null'
COMMON
SELECT DISTINCT user_id from orders where receive_id = 3 and arrival_id != 'null'
JOIN users on (users.id = orders.user_id)
SELECT DISTINCT user_id from orders JOIN
users on (users.id = orders.user_id) where receive_id = 3 and
arrival_id != 'null' AND user_id IN (SELECT DISTINCT user_id from
orders where receive_id = 1 and departure_id != 'null');
您可以使用此查询来获取记录
试试这个查询,
select orders.id, users.id from orders inner join users
on orders.user_id = users.id
通过将一个查询作为另一个查询的子查询,您将获得所需的内容。
像这样,
SELECT DISTINCT user_id from orders
JOIN users on (users.id = orders.user_id)
where receive_id = 1 and departure_id != 'null'
and user_id in (SELECT DISTINCT user_id from orders where receive_id = 3 and arrival_id != 'null')
希望对您有所帮助。