1

我有这个 MySQL 表:

  • 车站(ID,名称)
  • station_track (id, id_station, id_track)
  • 跟踪(ID,名称)

我想获取包含 A 站和 B 站的所有轨道......我只是想不通:SI 试过这样:

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 伙计们寻求帮助!

4

3 回答 3

3

您的最终条件(station.name="first" AND station.name="second")是检查一个变量是否同时等于两个不同的值,这永远不会为真。

如果要查找名称为first或的所有电台,则second需要使用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")
于 2013-05-29T15:15:04.783 回答
0

您将不得不做一些思考并重新设计您的表格。如果要将字段与值列表匹配,可以使用“in”操作

IE

SELECT * FROM station_track WHERE id_track in (1, 2, 3, 4);

以上将返回与列表中任何值匹配的所有记录。因此,请考虑如何利用这一点并重新设计架构。

于 2013-05-29T15:21:00.083 回答
0

假设您希望将曲目链接到 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
于 2013-05-29T15:21:43.787 回答