0
我想写一个MYSQL查询获取标题,url_title,类别,并且还设置了一个基于类别值的值的URL字段。与IF条件的MySQL查询
我需要做的是检查管道分离的类别列(例如:10 | 122 | 40 | 187),并将url列的值设置为http://www.mydomain.tld并添加url_title,如果类别列包含类别10 ,如果列中没有这些类别,则返回40,80,然后将url设置为http://www.mydomain2.tld并添加url_title。
我试图使用下面的条件,但我显然做错了;
SELECT exp_channel_data.entry_id AS entry_id, exp_channel_titles.title AS title, exp_channel_titles.url_title AS url_title, GROUP_CONCAT(cp.cat_id SEPARATOR '|') AS categories,
IF('122,123,124,125,126,127,128,129,130,131,132,187' IN categories,
(CONCAT('http://www.mydomain.tld',url_title AS 'URL')),
(CONCAT('http://www.mydomain2.tld',url_title AS 'URL'))
)
FROM data
FROM exp_channel_data
LEFT JOIN exp_channel_titles ON exp_channel_titles.entry_id = exp_channel_data.entry_id
LEFT JOIN exp_category_posts AS cp ON exp_channel_data.entry_id = cp.entry_id
这里是表结构;
exp_channel_data
-------------
entry_id int 10
exp_channel_titles
-------------
entry_id int 10
title varchar 100
url_title varchar 100
exp_category_posts [this is the junction table that has been referred to]
-------------
entry_id int 10
cat_id int 10
我将不胜感激任何意见。
更新:我已更新查询,我正在使用。我试图简化这个问题,但意识到这是一个基准。我还包括了上面的表格结构。
您不应该在列中存储分隔列表。关系数据库有一个伟大的数据类型来存储列表。在这种情况下,它被称为表格,特别是结点表格。 – 2014-09-24 11:03:05
该死的,我粘贴了错误的网址。我的意思是:可能重复[如何匹配逗号分隔的字符串,而不考虑它们在Mysql中的位置顺序](http://stackoverflow.com/questions/25887713/how-can-match-a-string-of-comma - 分隔-不论-的-其位阶/ 25887934#25887934)。 – GolezTrol 2014-09-24 11:06:55
对不起,我应该补充说,这些类别不是以管道分隔的方式存储的。我已将它们连接到查询中的一个字段中。 – doubleplusgood 2014-09-24 11:08:10