我需要编写一个可以执行以下操作的SQL代码:
我尝试了CASE语句,但效果不佳。请帮忙。
答案 0 :(得分:1)
既然你用两种方式标记了它:
Sql Server:
SELECT TOP 1 *
FROM [MyTable]
WHERE Status IN ('Pending', 'Active')
ORDER BY Case WHEN Status='Pending' THEN 0 ELSE 1 END, Created_Date DESC
<强> MySQL的:强>
SELECT *
FROM `MyTable`
WHERE Status IN ('Pending', 'Active')
ORDER BY Case WHEN Status='Pending' THEN 0 ELSE 1 END, Created_Date DESC
LIMIT 1
答案 1 :(得分:0)
如果我的问题是,我将如何做到这一点:
pending_records =“从status ='pending'”;
的记录中选择count(*)这将为我提供待处理记录的数量。根据这个数字,我会用“if”语句解决所有其他问题。
if( pending_records == 1){
Select the record and exit
}else if ...
并继续其他条件。
我希望这可以帮到你!
答案 2 :(得分:0)
我没有对此进行过测试,但我认为如果你按降序排序并且只获取EACH条件的第一条记录和UNION它们,那么你可以从该结果中取出最高记录。像这样:
SELECT TOP(1) *
FROM (
SELECT TOP(1) *
FROM Table1
WHERE Pending = 1
ORDER BY Created_date DESC
UNION
SELECT TOP(1) *
FROM Table1
WHERE Approved = 1
ORDER BY Created_date DESC
)
注意:这适用于SQL Server。对于MySQL,我认为它是LIMIT
而不是TOP