这个mysql查询似乎不适合我:
select *
from myTable
order by
find_in_set( category, "First, Second" ),
sortby,
title;
显然你不能在find_in_set函数之外订购?
有解决方法吗?我错过了什么吗?
感谢您的回复。
编辑:
这是正在运行的确切查询:
select
uid,
category,
title,
summary,
image_url,
link_url,
link_text
from links_and_documents
where link_url != ''
and status=1
order by
find_in_set( category, "Test_Category_Two,Test_Category_One" ),
sortby,
title;
它会返回您期望的所有项目,但会按排序对它们进行排序,并完全忽略find_in_set函数。
如果我将,sortby,title
放在查询末尾,则会按find_in_set函数对项目进行排序。
select
uid,
category,
title,
summary,
image_url,
link_url,
link_text
from links_and_documents
where link_url != ''
and status=1
order by
find_in_set( category, "Test_Category_Two,Test_Category_One" );
谢谢你看看。
表格结构:
CREATE TABLE `links_and_documents` (
`id` int(11) NOT NULL auto_increment,
`dateadded` varchar(19) NOT NULL default '',
`dateupdated` varchar(19) NOT NULL default '',
`uid` varchar(16) NOT NULL default '',
`clientuid` varchar(16) NOT NULL default '',
`status` char(1) NOT NULL default '1',
`sortby` varchar(16) NOT NULL default '',
`category` text NOT NULL,
`title` text NOT NULL,
`information` text NOT NULL,
`summary` text NOT NULL,
`services` text NOT NULL,
`link_url` text NOT NULL,
`link_text` text NOT NULL,
`document_url` text NOT NULL,
`document_text` text NOT NULL,
`image_url` text NOT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `category` (`status`,`category`(30))
)
我没有收到错误。
答案 0 :(得分:12)
几个月来我遇到了同样的问题:
order by find_in_set( category, "First, Second" )
有时使用工作,有时不工作。 今天我读了很多,下一个改变解决了我的问题:
ORDER BY FIELD( category, 'First', 'Second' )
希望现在帮助你还为时不晚。
答案 1 :(得分:3)
你不应该在
中留空格order by find_in_set( category, "First, Second, Third, Fourth" )
应该是
order by find_in_set(category,"First,Second,Third,Fourth" )
答案 2 :(得分:0)