Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL对WHERE comparator的多个查询_Mysql_Sql_Database - Fatal编程技术网

Mysql SQL对WHERE comparator的多个查询

Mysql SQL对WHERE comparator的多个查询,mysql,sql,database,Mysql,Sql,Database,我正在尝试编写一个MySQL查询,它将根据从查询到表1的结果从表2中选择结果。大概是这样的: SELECT route_id FROM trips WHERE trip_id = SELECT trip_id FROM stop_times WHERE stop_id=<ID GOES HERE> LIMIT 1 SELECT t.route_id FROM trips t WHERE t.trip_id = (SELECT st.trip_id

我正在尝试编写一个MySQL查询,它将根据从查询到表1的结果从表2中选择结果。大概是这样的:

SELECT route_id FROM trips WHERE trip_id = 
SELECT trip_id  FROM stop_times WHERE 
stop_id=<ID GOES HERE> LIMIT 1
SELECT t.route_id
FROM trips t
WHERE t.trip_id = (SELECT st.trip_id
                   FROM stop_times st
                   WHERE st.stop_id = <ID GOES HERE>
                   LIMIT 1
                  );

您的子查询应该是:

SELECT route_id 
FROM trips 
WHERE trips.trip_id =
( 
    SELECT stop_times.trip_id  
    FROM stop_times 
    WHERE stop_id = <ID GOES HERE> 
    LIMIT 1
) 
有两种选择:

SELECT route_id FROM trips WHERE trip_id in (SELECT trip_id  FROM stop_times WHERE stop_id=<ID GOES HERE> LIMIT 1)
或者更简单:

select t.route_id from trips t, stop_times s where t.trip_id = s.trip_id and s.stop_id= <ID GOES HERE> LIMIT 1

您的原始查询应该这样编写:

SELECT route_id FROM trips WHERE trip_id = 
SELECT trip_id  FROM stop_times WHERE 
stop_id=<ID GOES HERE> LIMIT 1
SELECT t.route_id
FROM trips t
WHERE t.trip_id = (SELECT st.trip_id
                   FROM stop_times st
                   WHERE st.stop_id = <ID GOES HERE>
                   LIMIT 1
                  );
我认为这更通常地写为:

SELECT t.route_id
FROM stop_times st JOIN
     trips t
     ON t.trip_id = st.trip_id
WHERE st.stop_id = <ID GOES HERE>
LIMIT 1;

这假设您希望返回一行。

将内部选择放在括号内,请将其格式设置得更好,以便我们更容易阅读。示例数据和所需结果将有所帮助。