Ich möchte wissen, schreiben p.amount is null
bei case .. when
Funktion ist besser, oder schreiben Sie es bei WHERE
Klausel?Setzen Sie eine Bedingung auf CASE .. WANN vs WHERE-Klausel?
ONE:
select *,
case when p.amount is null then '1'
else (select count(1)
from Money_paid mp
where mp.post_id = p.id and mp.user_id = :user_id limit 1)
end paid
from Posts p
where p.id = :post_id
ZWEI:
select *,
(select count(1)
from Money_paid mp
where mp.post_id = p.id and
mp.user_id = :user_id and
p.amount is not null
limit 1) paid
from Posts p
where p.id = :post_id
So welche?
warum alle mit LIMIT 1 auf ? – Quassnoi
Was möchten Sie zurückgeben? Die Zahl, die bezahlt haben oder eine Flagge? Außerdem sind die Rückgabewerte nicht gleich, wenn "p.amount null ist" (der erste gibt 1 und der zweite 0 zurück). –
@GordonLinoff Nein, ich will nicht die Nummer, die bezahlt haben, ich will nur überprüfen, gibt es eine Zeile? (gerade vorhanden) – stack