【问题标题】:Combine two SELECT queries together by using value from SELECT in WHERE通过在 WHERE 中使用来自 SELECT 的值将两个 SELECT 查询组合在一起
【发布时间】:2019-07-21 18:56:21
【问题描述】:
id | number
---|--------
1  | null
2  | 1
3  | null
4  | 0
5  | 4
6  | 4

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

$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$idnumber。因此,如果$id = 5,那么number 将是4。所以选择ID = 5 的行。

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

【问题讨论】:

  • 嗯,这还不清楚。鉴于您当前的输入数据,您能否向我们展示您对几个不同的输入 $id = 4 的预期结果?

标签: mysql sql join union where


【解决方案1】:

使用与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

【讨论】:

    猜你喜欢
    • 2021-02-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    相关资源
    最近更新 更多