MySQL MySQL结合两个查询

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13400726/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 15:28:01  来源:igfitidea点击:

MySQL combine two queries

mysql

提问by litenull

I have two MySQL queries

我有两个 MySQL 查询

QUERY:

SELECT sodnik_1 FROM prihodnji_krog  WHERE file_id='8778' AND sodnik_1 != ''
UNION 
SELECT sodnik_2 FROM prihodnji_krog  WHERE file_id='8778' AND sodnik_2 != ''
UNION
SELECT sodnik_3 FROM prihodnji_krog  WHERE file_id='8778' AND sodnik_3 != ''
UNION
SELECT sodnik_4 FROM prihodnji_krog  WHERE file_id='8778' AND sodnik_4 != ''

QUERY:
SELECT value FROM notification_sodniki WHERE user_id='16'

OUTPUT LOOKS LIKE THIS:

Name 1
Name 2
Name 3
Name 4

IN BOTH TABLES

They give me 1 column. I'd like to perform a cross join and return only the values that are present in both select queries. Is that possible ?

他们给了我 1 列。我想执行交叉联接并仅返回两个选择查询中都存在的值。那可能吗 ?

回答by Marc

How about

怎么样

SELECT * FROM
(
    SELECT sodnik_1 as value FROM prihodnji_krog  WHERE file_id='8778' AND sodnik_1 != ''
    UNION 
    SELECT sodnik_2 as value FROM prihodnji_krog  WHERE file_id='8778' AND sodnik_2 != ''
    UNION
    SELECT sodnik_3 as value FROM prihodnji_krog  WHERE file_id='8778' AND sodnik_3 != ''
    UNION
    SELECT sodnik_4 as value FROM prihodnji_krog  WHERE file_id='8778' AND sodnik_4 != ''
) x INNER JOIN 
(
    SELECT value FROM notification_sodniki WHERE user_id='16'
) y 
ON x.value = y.value

When you use subqueries in a FROMclause, it's like if you are making temporary tables. Then with the alias you can refer to them and do a INNER JOIN

当您在FROM子句中使用子查询时,就像您在制作临时表一样。然后使用别名,您可以参考它们并执行INNER JOIN