SQL-分组、ID、名称
我想知道1c的答案应该是什么。在本网站上:SQL-分组、ID、名称,sql,Sql,我想知道1c的答案应该是什么。在本网站上: 这显然不起作用,不管发生什么,ID和名称都不会显示。这里少了什么?谢谢。它会给您带来以下错误: sql:“组语句”中的未知列“名称” routetabel中没有name。 表结构包括: stops(id, name) route(num,company,pos, stop) 所以这个测验的答案是: SELECT s.id, s.name FROM route r, stops s WHERE r.stop= s.id and r.n
这显然不起作用,不管发生什么,ID和名称都不会显示。这里少了什么?谢谢。它会给您带来以下错误: sql:“组语句”中的未知列“名称”
route
tabel中没有name
。
表结构包括:
stops(id, name)
route(num,company,pos, stop)
所以这个测验的答案是:
SELECT s.id, s.name
FROM route r, stops s
WHERE r.stop= s.id
and r.num = 4 AND r.company = 'LRT'
您需要连接这些表,因为要返回的数据与过滤数据的表位于不同的表中。这是有效的,不包括任何不必要的表连接。一个好的经验法则是使用
EXISTS
来验证表中不需要输出的值。否则,您将使用JOIN
select s.id, s.name
from stops s
inner join route r
on s.id = r.stop
where r.num= 4
AND r.company= 'LRT'
SELECT stops.id, stops.name
FROM stops
WHERE EXISTS
(
SELECT 1 FROM route
WHERE route.stop = stops.id AND num = '4' AND company = 'LRT'
)
为什么use存在一个连接?@wickedrunr这取决于查询,就像这些文章所说的,但是一般来说,如果您不使用我发现EXISTS的输出,那么它的性能会更好
select s.id, s.name
from stops s
inner join route r
on s.id = r.stop
where r.num= 4
AND r.company= 'LRT'
SELECT stops.id, stops.name
FROM stops
WHERE EXISTS
(
SELECT 1 FROM route
WHERE route.stop = stops.id AND num = '4' AND company = 'LRT'
)