很抱歉,如果这个问题太基础了,我自学TSQL而且我不知道如何完成以下工作:
我有这个问题:
SELECT table1.name, table2.city AS city, table2.province
FROM table1 LEFT OUTER JOIN table2
ON table1.id = table2.id
WHERE table1.name NOT LIKE 'test'
ORDER BY city DESC
我想补充一点:
SELECT table3.country
FROM table3 LEFT JOIN table2
ON table3.id = table2.id
WHERE table2.city = city
所以我可以得到这个结果:
name - city - province - country
我该怎么办?
非常感谢!
答案 0 :(得分:0)
你可以这样做:
SELECT
table1.name,
table2.city AS city,
table2.province,
table3.country
FROM
table1
LEFT OUTER JOIN table2
ON table1.id = table2.id
RIGHT JOIN table3
ON table2.id = table3.id
WHERE
table1.name NOT LIKE 'test'
ORDER BY city DESC
答案 1 :(得分:0)
毫无疑问太基本了!我是一位忙于询问非常基本的Java Script问题的SQL专家。您也可以直接询问而不是沮丧地尝试理解您在网络上可以找到的内容,只要您努力,那么每个人都会感到高兴。
你所要求的实际上根本不是基本的,可以用很多方式来解释。一些不同的SQL会给你一些不同的结果。
首先,这部分:
WHERE table1.name NOT LIKE 'test'
使用没有通配符(%,_)的LIKE是不常见的。如果要排除完全“测试”的记录,请不要使用like,请改为使用:
WHERE table1.name <> 'test'
&LT;&GT;意思是'与'不同'
关于外部加入下一个表格,首先,你确定要将其加入吗?
您可能会关注此代码,但这并不是您要求的:
SELECT table1.name, table2.city AS city, table2.province
FROM table1 LEFT OUTER JOIN table2
ON table1.id = table2.id
LEFT OUTER JOIN table3
ON table1.id = table3.id
WHERE table1.name NOT LIKE 'test'
ORDER BY city DESC
这当然缺少这一点:
AND table2.city = city
在这种情况下,您是尝试将列城市与文字字符串“city”匹配,还是尝试匹配列城市?如果是,则是table1或table2中的列
将问题整合起来的方式略有不同,这反过来意味着编写不同的SQL,这反过来会给你一个不同的答案。
所以想一想:
此外,如果您为表格提供一个不太通用的名称,它可以帮助我们想象您正在尝试做什么。
答案 2 :(得分:-1)
只需在一个SQL语句中使用两个连接:
SELECT table1.name, table2.city AS city, table2.province, table3.country
FROM table1
LEFT OUTER JOIN table2 ON table1.id = table2.id
LEFT OUTER JOIN table3 ON table3.id = table2.countryid
WHERE table1.name NOT LIKE 'test' and table2.city = 'Cityname'
ORDER BY city DESC
(对不起,伙计们,我没有时间查看它,感谢您的评论。代码已修改。)