我有一个查询,我想在查询中包含一个特定字段,但仅当该字段中包含特定值时,否则,我不想包含它。
所以,例如,如果我的表有:
ID | Title | Liked | Score
1 Happy Song 1 10
2 Sad Song 0 20
3 Fun Song 1 30
4 Friendly Song 0 15
我的初步查询是:
SELECT *
FROM songs
WHERE Liked = '1'
ORDER BY ID Score DESC
LIMIT 3;
但是,如果返回的记录中没有一个在Liked字段中有1或只有其中一个记录,我仍然需要返回三条记录,并希望它只返回常规的非Liked记录。
这可能吗?
答案 0 :(得分:2)
SELECT *
FROM songs
ORDER BY Liked DESC, ID, Score DESC
LIMIT 3
ORDER BY Liked DESC
首先放置喜欢的记录。如果至少有3个喜欢的记录,则会显示它们。如果数量较少,则会添加不喜欢的记录。
顺便说一句,如果ID
字段是唯一的,那么ORDER BY
子句中的其他字段就没有意义了。后面的字段仅在较早的字段具有相同值时使用。您可能需要ORDER BY Liked DESC, Score DESC
。
答案 1 :(得分:0)
使用此
SELECT * FROM songs ORDER BY Liked DESC, ID DESC LIMIT 3;
您还需要通过Liked列进行排序,以获得前3个喜欢的ID。