我需要从某个条件下的表中选择LIMIT为20的随机值。我使用了以下相同的
SELECT *, rand() FROM table WHERE column1 LIKE '%text%' ORDER BY rand() LIMIT 20
但有时标准不会满足,只选择少于20行。在这种情况下,我需要添加另一个select语句,其中将有另一个标准,并且不等于之前的Selection(我的意思是DISTINCT) 我如何通过单一查询(类似于条件查询)来实现这一点。
mytable定义为
CREATE TABLE IF NOT EXISTS `mytable`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`house` varchar(100) NOT NULL,
`place` varchar(100) NOT NULL,
PRIMARY KEY (`VinRav_ExamZ_id`) );
表的内容
id------name-------house------place--
1-------data1------data2------data3--
2-------data4------data5------data6--
3-------data7------data8------data6--
4-------data9------data9------data10--
5-------data11-----data8------data12--
然后第一次查询
SELECT *, rand() FROM mytable WHERE palce LIKE 'data6' ORDER BY rand() LIMIT 20
将给出2行< 20。
2-------data4------data5------data6--
3-------data7------data8------data6--
在这种情况下执行
SELECT *, rand() FROM mytable WHERE house LIKE 'data8' ORDER BY rand() LIMIT 20
将返回
3-------data7------data8------data6--
5-------data11-----data8------data12--
然后作为一个组合我需要得到
2-------data4------data5------data6--
3-------data7------data8------data6--
5-------data11-----data8------data12--
提前谢谢
答案 0 :(得分:0)
SELECT *
FROM table
-- WHERE column1 LIKE '%text%' -- (notice removed where)
ORDER BY
case when column1 like '%text%' then 1
when column1 like '%secondCriteria%' then 2
when column1 like '%thirdCriteria%' then 3
else 4
end,
rand()
LIMIT 20