Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用UNION组合两个SELECT查询,其中一个是联接_Sql_Select_Union - Fatal编程技术网

Sql 使用UNION组合两个SELECT查询,其中一个是联接

Sql 使用UNION组合两个SELECT查询,其中一个是联接,sql,select,union,Sql,Select,Union,我想使用UNION组合两个select语句,但它不起作用 $sql = "SELECT content FROM tbl_jokes JOIN tbl_jokes_relationships ON tbl_jokes_relationships.rid_jokes = tbl_jokes.id_jokes WHERE tbl_jokes_relationships.rid_jokes_categories ='1' ORDER BY id_jokes DESC

我想使用UNION组合两个select语句,但它不起作用

$sql = "SELECT content
    FROM tbl_jokes 
    JOIN tbl_jokes_relationships ON tbl_jokes_relationships.rid_jokes = tbl_jokes.id_jokes
    WHERE tbl_jokes_relationships.rid_jokes_categories ='1'
    ORDER BY id_jokes DESC
    UNION
    SELECT * FROM tbl_jokes 
    WHERE rid_jokes_categories='blondinenwitze'
";

它不起作用,我测试了两个没有联合的
select
语句,结果显示了我想要的结果,感谢您的帮助您需要选择相同的列。大概是这样的:

SELECT j.*
FROM tbl_jokes j JOIN
     tbl_jokes_relationships jr
     ON jr.rid_jokes = j.id_jokes
WHERE jr.rid_jokes_categories = 1
UNION
SELECT j.*
FROM tbl_jokes j
WHERE j.rid_jokes_categories = 'blondinenwitze'
为此使用
联合
似乎很愚蠢,除非它满足某些性能目标:

SELECT j.*
FROM tbl_jokes j LEFT JOIN
     tbl_jokes_relationships jr
     ON jr.rid_jokes = j.id_jokes
WHERE jr.rid_jokes_categories = 1 OR
      j.rid_jokes_categories = 'blondinenwitze';

请注意,子查询中的
orderby
不起任何作用。如果要对结果进行排序,则必须为最外层的
SELECT

指定
ORDER BY
,您能告诉我j.*和jr是什么意思吗?对于该查询中的表,j和jr都是别名。j、 *将选择该表中的所有列。