让我们看看我有一个简单的table
像这样的:
name id
tom 1
jerry 2
... ...
从外面,我得到了一个包含名称的列表(tom,jerry,kettie ...)
我正在尝试使用WHERE IN
子句基于名称列表检索ID。
我可以
SELECT id FROM mySimpleTable where name in ('tom','jerry','kettie');
因此,只需迭代name list
并在括号中生成内容即可。
这可行,但是结果不是按输入顺序排列,例如,输入为tom, jerry, kettie
,预期结果为1,2,3
,但是输出实际上可以按任何顺序排列。
然后,如何修改,SQL clause
以确保我的输入和输出匹配,以便可以相应地执行以下过程。我听说JOIN
在这种情况下可能会有所帮助。
听说JOIN在这种情况下可能会有所帮助。
是的,它可以帮助您:
SELECT m.id
FROM mySimpleTable m
JOIN (
SELECT 'tom' AS name, 1 AS orderNum
UNION ALL
SELECT 'jerry' AS name, 2 AS orderNum
UNION ALL
SELECT 'kettie' AS name, 3 AS orderNum
) AS sub
ON m.name = sub.name
ORDER BY sub.orderNum ASC;
该解决方案也可以在不同的RDBMS中使用。field
是MySQL
具体的。
怎么运行的:
JOIN
将仅返回基于名称彼此对应的行ORDER BY
您在子查询中添加的列 本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句