我有两个表,event
和 performer
,每个表都有一个 slug
列。除了 slug
列之外,event
表还有列 col1
、col2
和 col3
和 performer
表有一个名为 id
的列。
我需要的是一个单一的查询,它将 slug
值作为输入并首先查看 event
表。如果找到匹配项,它会返回 event
表中的所有列。如果找不到匹配项,它会查看 performer
表并仅返回 id
。
本质上等同于下面两个查询:
select col1, col2, col3 from event where slug = ?
如果第一个查询中没有结果,请运行以下命令:
select id from performer where slug = ?
我知道返回的列数应该是一致的,所以 id
的值在第一种情况下可以为 null 而 col1
、col2 的值
和 col3
在第二种情况下可以为空。我可以测试 null 以查看是哪种情况。
我宁愿在查询中没有条件 - 我觉得它可以用一个查询来完成,但不知道如何做。
最佳答案
您可以尝试 IF EXISTS,它可以在一个查询中完成。我知道你说没有条件,但这是一个查询命令。
IF EXISTS(select col1, col2, col3 from event where slug = ?)
BEGIN
select col1, col2, col3 from event where slug = ?
END
ELSE
BEGIN
select id from performer where slug = ?
END
希望对您有所帮助!
关于mysql - 从具有不同列的两个表中获取数据的单个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35616197/