mysql 如果连接存在则更改 where 子句

mysql changing where clause if join exists

我想做的是加入相同的 table 并查看字段 "reference_id" 是否有值,如果有则它应该使用该值来获取包含数据的实际行,将该数据用于其余查询 - where 和 sort 子句,否则使用原始条目数据。

Table "entries" 字段:

id, text, type, reference_id, num_count

示例数据:

[1, "", 0, 2, 0],
[2, "some text", 2, 0, 50],
[3, "more text", 2, 0, 60],

应该return:

row 0: "more text"
row 1: "some text"

查询看起来像这样:

SELECT entries.text
FROM entries
LEFT JOIN entries as e2
     ON entries.reference_id = e2.id 
WHERE type = $type
ORDER BY num_count DESC

所以最后两个子句应该从entries.typeentries.num_count改为e2.typee2.num_count如果reference_id有东西。我该如何实现?

请在where子句中写上别名

    SELECT entries.text
FROM entries
LEFT JOIN entries as e2
     ON entries.reference_id = e2.id 
WHERE entries.type = $type
ORDER BY entries.num_count DESC

如果我理解正确,那么您只想使用左连接的 table 值(如果存在),否则使用主要的 tables 值。

我是这样的:-

SELECT COALESCE(e2.text, entries.text)
FROM entries
LEFT OUTER JOIN entries as e2
ON entries.reference_id = e2.id 
WHERE type = $type
ORDER BY COALESCE(e2.num_count, entries.num_count) DESC