Mysql SQL从显示值和值的联接表中选择值

Mysql SQL从显示值和值的联接表中选择值,mysql,Mysql,我有一个MySQL表: 站点id、名称 车站轨道id,id车站,id轨道 曲目id、名称 我想得到所有包含A站和B站的轨道。。。我就是想不出来:我试着这样: SELECT track.name FROM track, station_track , station WHERE station.id = station_track.id_station AND track.id = station_track.id_track AND (station.name = 'first'

我有一个MySQL表:

站点id、名称 车站轨道id,id车站,id轨道 曲目id、名称 我想得到所有包含A站和B站的轨道。。。我就是想不出来:我试着这样:

SELECT track.name
FROM track, station_track , station 
 WHERE station.id = station_track.id_station 
  AND track.id = station_track.id_track 
  AND (station.name = 'first' AND station.name = 'second')
它不起作用。。。我想我不能对相同的列值使用AND

已解决:

SELECT proge.ime FROM postaje, postaje_proge, proge
WHERE postaje.id=postaje_proge.ID_postaje AND proge.ID=postaje_proge.ID_proge 
AND postaje.ime_postaje in ("AP Mlinska","City Center")
GROUP BY proge.ime
HAVING count(proge.ime)=2
tnxx求救

您的最终条件station.name=first和station.name=second是检查一个变量是否同时等于两个不同的值,这两个变量的计算结果永远不会为true

如果要查找名称为第一个或第二个的所有电台,则需要使用or语句

SELECT track.name FROM track, station_track , station 
WHERE station.id=station_track.id_station 
AND track.id=station_track.id_track 
AND (station.name="first" OR station.name="second")

你需要做一些思考,重新设计你的表格。如果要将字段与值列表相匹配,可以使用“in”运算符

i、 e


上述操作将返回与列表中任何值匹配的所有记录。因此,请思考如何利用这一点并重新设计您的模式

假设您希望轨迹同时链接到站点A和B,请尝试:

SELECT t.name 
FROM track t
JOIN station_track st on t.id=st.id_track 
JOIN station s on s.id=st.id_station and s.name in ('first','second')
GROUP BY t.name
HAVING count(distinct s.name)=2

+1它也与规定的目标无关——获取包含A站和B站的所有轨道。好的:D我现在知道了……那么如何使其工作?有什么想法吗D我不知道很多SQL,但用SQL解决问题会很好作为替代方案,我想在c之后改变它,对或比较结果…但用SQL解决它会更好,所以我不需要传输太多数据:D他我不想要这个或那个…我需要这个和那个想象一下公交线路…你知道有一条公交线路比如100个车站……现在我需要弄到所有有A站和B站的公交线路。。。要理解为什么或是语句返回您要查找的所有行的唯一方式,您需要了解查询的处理方式。每一行都会根据您给定的条件进行处理和测试。如果使用station.name=first和station.name=second,则每行都将返回false,因为列不能有两个不同的值。当您使用station.name=first或station.name=second时,将对每一行进行比较,以确定它是否为提供的两行之一。如果是,则将其添加到返回结果中。在AP Mlinska中选择proge.ime FROM postaje、postaje_proge、proge,其中postaje.id=postaje_proge.id_postaje和proge.id=postaje_proge和postaje.ime_postaje,Melje-obračališče返回与OR子句相同的结果…我不希望只有一个站的结果Postaje我只希望两个站都有结果…@user2433018:你确定有任何轨道链接到两个站吗?你能给问题添加一些样本数据吗?这应该行。这是数据库…我希望它能帮助。。。你的回答变成了我的名字。。。从proge JOIN postaje_proge on proge.ID=postaje_proge.ID_proge JOIN postaje on postaje.ID=postaje_proge.ID_proge和postaje.ime_postaje在“Ptujska-Pošta”中选择proge.ime,按proge.ime包含countproge.ime=2的“Ptujska-TAM”分组
SELECT t.name 
FROM track t
JOIN station_track st on t.id=st.id_track 
JOIN station s on s.id=st.id_station and s.name in ('first','second')
GROUP BY t.name
HAVING count(distinct s.name)=2