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
$numberColumnOfId
是number
的$id
。因此,如果$id = 5
,那么number
将是4.因此选择ID = 5的行。
如何将两个SELECT语句组合在一起?
使用与UNION
结合的两个查询。
第一个查询获取具有给定$ id, the second query gets the ones that match via the
number`列的行。
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