首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL -我可以正确加入一个值列表吗?

MySQL -我可以正确加入一个值列表吗?
EN

Stack Overflow用户
提问于 2016-12-13 03:34:48
回答 2查看 5.7K关注 0票数 1

我正在尝试在db中查找表的正确连接结果,以及我在其他地方获得的值列表。这是我到目前为止所拥有的

代码语言:javascript
复制
SELECT * 
FROM new_assets n 
RIGHT JOIN ( VALUES ('0253608','test_name1')
                  , ('2311194', 'test_name2') AS v(id, name)) ON v.name=n.name;

我一直收到关于(VALUES ('0253608','test_name1'), ('2311194', 'test_name2')语法错误的错误。我做错了什么?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-12-13 03:36:32

MySQL在FROM子句中不支持VALUES()。只需使用SELECTUNION ALL即可。另外,我会把这段代码写成LEFT JOIN

代码语言:javascript
复制
SELECT *
FROM (SELECT '0253608' as id, 'test_name1' as name UNION ALL
      SELECT '2311194', 'test_name2'
     ) v LEFT JOIN
     new_assets n;

对于大多数人来说,遵循LEFT JOIN更容易。它说保留第一个表中的所有行,然后匹配后续表中的行;当您将它们链接在一起时,这是有效的。这通常比遵循链并说明最后一个表包含所有行更容易。

票数 5
EN

Stack Overflow用户

发布于 2016-12-13 03:41:41

你为什么不这样写呢?

代码语言:javascript
复制
SELECT n.*
  , CASE `name` 
    WHEN 'test_name1' THEN '0253608' 
    WHEN 'test_name2' THEN '2311194' 
  END AS id
FROM new_assets AS n
WHERE n.`name` IN ('test_name1', 'test_name2')
;

如果将WHERE ...替换为HAVING id IS NOT NULL,则可以消除重复的字符串文字;尽管它的性能可能不会很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41108214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档