Mysql 将2个排序查询与union组合
我正在使用union组合2个查询。 在添加订单时出现了一些问题 这是当前存在的查询Mysql 将2个排序查询与union组合,mysql,sql,union,Mysql,Sql,Union,我正在使用union组合2个查询。 在添加订单时出现了一些问题 这是当前存在的查询 SELECT * FROM ( SELECT * FROM ( SELECT nama_barang FROM transaksi_jual WHERE kategori_barang.`id_kategori`= "3" AND id_kam
SELECT *
FROM (
SELECT *
FROM (
SELECT nama_barang
FROM transaksi_jual
WHERE kategori_barang.`id_kategori`= "3"
AND id_kampus = "1"
AND ( nama_barang LIKE "%galaxy%"
AND nama_barang LIKE "%young%" )
) A ORDER BY date DESC
UNION
SELECT *
FROM (
SELECT A
FROM nama_barang
WHERE kategori_barang.`id_kategori`= "3"
AND id_kampus = "1"
AND ( nama_barang LIKE "%galaxy%"
OR nama_barang LIKE "%young%"
)
) B ORDER BY tanggal DESC
) drived LIMIT 0,12
我的问题是什么?
难道没有其他方法可以将2个排序查询组合成1个吗?
如何将2个排序查询合并为1个
谢谢,我感谢你的帮助。对不起,我语法不好。你在工会后点菜,比如:
SELECT * FROM table1
UNION
SELECT * FROM table2
ORDER BY id
这个顺序对表1和表2中的整个结果进行排序
如果您想先查看第一个子集的记录,请尝试:
SELECT *, 1 AS order FROM table1
UNION
SELECT *, 2 AS order FROM table2
ORDER BY order, id
注意:
UNION
执行起来比UNION ALL
要重得多,请确保在使用UNION
时需要删除双重记录,我认为您根本不需要UNION
。除了where
子句的一部分外,这两个子查询似乎是相同的
SELECT nama_barang,
harga,
id_jual,
kampus.`nama`,
deskripsi,
tanggal,
baru
FROM transaksi_jual
JOIN seller
USING (id_seller)
JOIN kategori_barang
USING (id_kategori)
JOIN kampus
USING (id_kampus)
JOIN subkategori_barang2
ON subkategori_barang2.`id` = transaksi_jual.`id_subkategori2`
JOIN subkategori_barang
ON subkategori_barang.`id` = transaksi_jual.`id_subkategori1`
WHERE kategori_barang.`id_kategori`= "3"
AND id_kampus = "1"
AND (( nama_barang LIKE "%%"
AND nama_barang LIKE "%%"
AND nama_barang LIKE "%%"
AND nama_barang LIKE "%%"
) OR
( nama_barang LIKE "%%"
OR nama_barang LIKE "%%"
OR nama_barang LIKE "%%"
OR nama_barang LIKE "%%"
)
)
ORDER BY tanngal;
我不确定你想要什么样的订单,但你可以通过一个查询来完成
编辑:
我想那才是你真正想要的。为此,在单个查询中使用以下order by
:
order by ((nama_barang LIKE '%%') +
(nama_barang LIKE '%%') +
(nama_barang LIKE '%%') +
(nama_barang LIKE '%%')
) desc
这将按匹配关键字的数量排序。注意,我还将分隔的字符串更改为单引号。对字符串和日期常量使用单引号是一个好主意,除此之外什么都不做。但是对每个查询使用顺序如何。有可能吗?有什么意义?整个结果集将是无序的?也就是说,我相信(不是100%确定)这是不可能的。是的,但是有一个解决办法(请参阅我的编辑)。重点是显示包含搜索关键字中所有单词的按日期排序的数据,其余显示包含搜索关键字中几个单词的按日期排序的数据。@user3209635啊,好的,在这种情况下,我认为第二个代码示例适合您。代码有两个非常奇怪的部分:
(nama_barang像“%%”和nama_barang像“%%”,nama_barang像“%%”和nama_barang像“%%”)
和(nama_barang类“%%”或nama_barang类“%%”或nama_barang类“%%”或nama_barang类“%%”)
ThisLIKE
事情一点也不让你困惑?@Alexander…我假设OP简化了问题的查询。不,像这样的事情是通过“for”循环构建的,将每个单词从用户输入的搜索键中分离出来。而且,我查询的要点是显示包含sea中所有单词的按日期排序的数据rch键和rest键显示按日期排序的数据,这些数据包含搜索键中的几个单词。