我想要做的是加入同一个表,看看字段“reference_id”是否有值,如果是,那么它应该使用该值来获取包含数据的实际行,并将其余数据用于query - where和sort子句,否则使用原始条目数据。
表“条目”字段:
id, text, type, reference_id, num_count
示例数据:
[1, "", 0, 2, 0],
[2, "some text", 2, 0, 50],
[3, "more text", 2, 0, 60],
应该返回:
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
如果reference_id有某些内容,那么最后两个子句应该从entries.type
和entries.num_count
更改为e2.type
和e2.num_count
。我如何实现这一目标?
答案 0 :(得分:0)
请在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
答案 1 :(得分:0)
如果我理解正确,那么你只想使用左连接表值(如果存在),否则主表值。
我是这样的: -
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