通过使用WHERE中SELECT的值将两个SELECT查询组合在一起

问题描述 投票:-1回答:1
id | number
---|--------
1  | null
2  | 1
3  | null
4  | 0
5  | 4
6  | 4

这是我想在一个查询中执行此操作。如何将这两个查询组合在一起?

$id = 4;
SELECT * FROM users WHERE id = $id OR number = $id

// This will return rows 4,5,6

第二个查询:

$id = 5;
SELECT * FROM users WHERE id = $id AND id = $numberColumnOfId AND number = $numberOfColumnId;

// This will return rows 4,5,6

$numberColumnOfIdnumber$id。因此,如果$id = 5,那么number将是4.因此选择ID = 5的行。

如何将两个SELECT语句组合在一起?

mysql sql join union where
1个回答
0
投票

使用与UNION结合的两个查询。

第一个查询获取具有给定$ id, the second query gets the ones that match via thenumber`列的行。

SELECT *
FROM users
WHERE id = $id OR number = $id
UNION
SELECT u1.*
FROM users AS u1
JOIN users AS u2 ON u1.number = u2.number OR u1.id = u2.number
WHERE u2.id = $id or u2.number = $id

DEMO

© www.soinside.com 2019 - 2024. All rights reserved.