我有这个MySQL表:
我希望得到包含A站和B站的所有曲目......我只是想不出来:S我试过这样:
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伙伴们寻求帮助!
答案 0 :(得分: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")
答案 1 :(得分:0)
您将需要进行一些思考并重新设计表格。如果要将字段与值列表匹配,可以使用“in”操作
即
SELECT * FROM station_track WHERE id_track in (1, 2, 3, 4);
以上内容将返回与列表中任何值匹配的所有记录。因此,请考虑如何利用这一点并重新设计架构。
答案 2 :(得分: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