【发布时间】:2019-07-21 14:04:12
【问题描述】:
我想要实现两件事。
这是我的数据库表,名为“table”。
id | friend
---|--------
1 | null
2 | 1
3 | 0
4 | 3
5 | 3
6 | null
我想做两个 SELECT 查询。
$id = 3;
SELECT * FROM table WHERE id = $id; // Not sql injection safe, just an example
这应该选择row id = 3。如果该行的friend column = 0,那么:
SELECT rows WHERE friend = $id.
如果该行的 friend 列不是 0,则只返回该行,即第 3 行。但是因为我上面的表格显示第 3 行的 friend 列 = 0,这应该完全返回行:3、4、5。
另外,另一种情况有点不同:
$id = 5;
SELECT * FROM table WHERE id = $id;
如果该行的friend 列(不等于)0 且不为空,则使用friend 数字和:
SELECT * WHERE id = friend from previous table.
在本例中,它将返回第 3、4、5 行,因为 ID = 5 并且 friend ID 为 5 是 3。所以我们在列 id AND friend 中搜索 3 并选择它。
我想将所有这些组合到一个 MySQL SELECT 查询中。我该怎么做?
任何帮助将不胜感激!
【问题讨论】:
标签: mysql join select union where