我有一条sql语句
SELECT emp.id, emp.name,
FROM emp, office, payment
WHERE emp.id = office.empid
AND payment.id = emp.pay
但是我实际上想要
AND payment.id = emp.pay
有条件地执行。它不应该总是执行。例如仅当emp.pay不为空时才应执行
答案 0 :(得分:0)
我认为您的情况会如下
SELECT emp.id, emp.name,
FROM emp, office, payment
WHERE emp.id = office.empid
or (payment.id = emp.pay and emp.pay is not null)
我更喜欢像下面这样的显式联接
SELECT emp.id, emp.name,
FROM emp join
office on emp.id = office.empid
left join payment on payment.id = emp.pay
答案 1 :(得分:0)
您可以使用CASE WHEN
在WHERE子句中形成条件,但是在进行连接时,您的代码是一个可怕的习惯。您不应该那样做联接。
如果仅当emp pay不为null时才想使这些值匹配,则可以编写内部联接。
SELECT emp.id,
emp.name,
FROM emp
INNER JOIN office
ON emp.id = office.empid
LEFT JOIN payment
ON payment.id = emp.pay
WHERE emp.pay IS NOT NULL
几行示例数据将有助于确认您希望输出如何显示。