我知道标题可能不多说,但我不知道如何表达。
我想在php中创建一个脚本,但我不知道如何进行良好的查询。我想查询那样的工作:他想要的用户类型名称和他得到:5条记录,其价格> =比输入名称,输入记录,5条记录的价格< =比输入名称。
数据库架构:
id - int
name - string
price - int
示例数据:
1 test1 500
2 test2 400
3 test3 333
4 test4 666
5 test5 500
6 test6 111
7 test7 500
8 test8 222
9 test9 777
10 test10 888
11 test11 333
12 test12 444
输入'test7'时的预期结果:
10 test10 888
9 test9 777
4 test4 666
5 test5 500
1 test1 500
7 test7 500 - middle record
12 test12 444
2 test2 400
11 test11 333
3 test3 333
8 test8 222
我做了类似的事情,但有两个问题:
(
SELECT `id`, `name`, `price` FROM `items` WHERE `price` >= price_select2 AND `name` != input_name ORDER BY `price` ASC LIMIT 5
)
UNION ALL
(
SELECT `id`, `name`, `price` FROM `items` WHERE `name` = 'test7'
)
UNION ALL
(
SELECT `id`, `name`, `price` FROM `items` WHERE `price` <= price_select2 AND `name` != input_name ORDER BY `price` DESC LIMIT 5
)
答案 0 :(得分:2)
您可以使用union all
:
(select i.*
from items i
where price <= (select price from items i2 where name = @input_name)
order by price desc
limit 6
) union all
(select i.*
from items i
where price > (select price from items i2 where name = @input_name)
order by price asc
limit 5
)
如果您想按价格订购,请在查询结尾添加order by price
。