Sql 使用UNION组合两个SELECT查询,其中一个是联接
我想使用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
$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、 *将选择该表中的所有列。