mysql - 在第二个查询中使用带有 IN 子句的第一个查询中的选定列
问题描述
问题已在下面重新创建:
/* query - 1 */
Select id, title from table1;
/* returns */
id | title
-----------
1 | data-1
2 | data-2
3 | data-3
4 | data-4
5 | data-5
我想在第二个查询中将此列 id 的数据与 IN 子句一起使用。像这样的东西:
Select id, title from table1
JOIN
Select anotherColumn from table2 where table2.id IN (1,2,3,4,5) on table1.id = table2.id
1,2,3,4,5
如何在第二个查询中使用从第一个查询中选择的列数据,而不是手动编写?
编辑:
实际查询:
SELECT *
FROM
(
SELECT R.id, U.ic_id as rider, U.name, DP.department_name, R.location,
(R.distance - 1) + 10 as cost , R.timestamp, R.status
FROM requests AS R, iconnect.users AS U, iconnect.departments AS DP
WHERE R.pool = '125' AND R.rider = U.ic_id AND U.department = DP.id
) requestDetails
JOIN
(
SELECT AVG(rider_rating) AS rider_rating,rider
FROM
(
SELECT rider_rating, R.rider
FROM journeys AS J, requests AS R
WHERE J.req_id = R.id AND R.rider IN (12,13) LIMIT 999999
) AS allRatings
GROUP BY rider
) ratingsTable
ON requestDetails.rider = ratingsTable.rider
/* instead of (12,13) I want to use requestDetails.rider selected from the first derived table */
解决方案
一种选择是使用一个EXISTS
子句:
SELECT id, title
FROM table1 t1
WHERE EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id);
实际上,两个表之间的简单内部连接也可以工作。但是,您可能希望SELECT DISTINCT
在给定记录 intable1
匹配多个记录的情况下使用table2
. 这将给我们留下这个:
SELECT DISTINCT t1.id, t1.title
FROM table1 t1
INNER JOIN table2 t2
ON t1.id = t2.id;
推荐阅读
- c# - EntityFrameworkCore 不批量插入
- mysql - 从多个表中选择数据 - laravel
- java - 如何在 Spring Boot 应用程序中插入 XML Prolog 到 Rest XML 响应
- python - 硒问题 - find_elements_by_xpath 或 find_elements_by_tag
- xml - 使用 python-docx 编辑浮动文本框或编辑 document.xml?
- flutter - 将firebase添加到flutter项目并获得FAILURE:构建失败并出现异常错误
- javascript - 当 module.exports 被分配一个对象时,为什么这是一个空对象?
- javascript - 如何处理反应原生文本输入组件的输入验证?
- ruby-on-rails - Rails:基于另一个数组对数组进行排序
- android - Android 单元测试 + DecimalFormat