Объедините два запроса SELECT вместе, используя значение из SELECT в WHERE - PullRequest
0 голосов
/ 28 февраля 2019
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

2-й запрос:

$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 вместе?

1 Ответ

0 голосов
/ 28 февраля 2019

Используйте два запроса, которые вы комбинируете с 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

DEMO

...