我有下面的代码(我使用的是northwind数据库),它给出了这个图片中显示的结果
SELECT a.FirstName, a.TitleOfCourtesy, a.Notes, c.CustomerYear
FROM employees a
INNER JOIN orders b
ON a.EmployeeID = b.EmployeeID
LEFT JOIN customers c
ON b.CustomerID = c.CustomerID
WHERE a.TitleOfCourtesy = 'Ms.';上面的代码组合了三个表,并使用a.TitleOfCourtesy = 'Ms.'选择了行。
从结果来看,我希望接受列%1992%中包含a.Notes的行,并且只显示c.CustomerYear等于1992的行。所以在前面的图片中,我应该只看到第二个顶部的行。
我想我可以使用CASE + WHEN语法来创建一种IF语句,但是在CASE行中我只得到了无效的语法使用。案件部分是在哪里之后移动,还是我使用它完全错误?
SELECT a.FirstName, a.TitleOfCourtesy, a.Notes, c.CustomerYear
CASE
WHEN a.Notes LIKE '%1992%' THEN c.CustomerYear LIKE '1992'
ELSE NULL END
FROM employees a
INNER JOIN orders b
ON a.EmployeeID = b.EmployeeID
LEFT JOIN customers c
ON b.CustomerID = c.CustomerID
WHERE a.TitleOfCourtesy = 'Ms.';我应该怎么想才能达到我想要的结果?
发布于 2018-09-21 22:19:03
你只需要扩展WHERE条款..。
SELECT a.FirstName, a.TitleOfCourtesy, a.Notes, c.CustomerYear
FROM employees a
INNER JOIN orders b
ON a.EmployeeID = b.EmployeeID
LEFT JOIN customers c
ON b.CustomerID = c.CustomerID
WHERE a.TitleOfCourtesy = 'Ms.'
AND a.Notes LIKE '%1992%'
AND c.CustomerYear LIKE '1992';我也只在你的图像中看到一个匹配行,而不是两个。所以我可能误解了你想要达到的目标..。也许你想让这个排两排?
SELECT a.FirstName, a.TitleOfCourtesy, a.Notes, c.CustomerYear
FROM employees a
INNER JOIN orders b
ON a.EmployeeID = b.EmployeeID
LEFT JOIN customers c
ON b.CustomerID = c.CustomerID
WHERE a.TitleOfCourtesy = 'Ms.'
AND a.Notes LIKE '%1992%'
AND (c.CustomerYear LIKE '1992' OR c.CustomerYear IS NULL)最后,您不需要LIKE '1992',您只需使用= '1992',如果值是整数,只需使用= 1992.
https://stackoverflow.com/questions/52451576
复制相似问题