使用MySQL查询,如果某个字段具有特定值,则将其包含在SELECT查询中,否则不要包含它

时间:2015-04-25 07:00:00

标签: mysql

我有一个查询,我想在查询中包含一个特定字段,但仅当该字段中包含特定值时,否则,我不想包含它。

所以,例如,如果我的表有:

 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记录。

这可能吗?

2 个答案:

答案 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。