JOIN mysql if else 语句
JOIN mysql if else statement
这是一个奇怪的条件语句 - 我不确定是否可行。
我有一个 MYSQL 问题:
SELECT
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date, cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id
FROM cute_news, cute_fields
WHERE
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND
cute_fields.cf_id = cute_news.cf_id AND
FIND_IN_SET ('10', cute_news.category)
ORDER BY cute_news.date DESC
我的问题是我想要:
IF ( cute_fields.cf_id = cute_news.cf_id )THEN
{ SELECT
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date, cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id
FROM cute_news, cute_fields
WHERE
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND
cute_fields.cf_id = cute_news.cf_id AND
FIND_IN_SET ('10', cute_news.category)
ORDER BY cute_news.date DESC }
ELSE {
SELECT
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date
FROM cute_news
WHERE
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND
FIND_IN_SET ('10', cute_news.category)
ORDER BY cute_news.date DESC }
ORDER BY..
真正执行这个是最困难的时候..也许这是不可能的。
在此先感谢 NINJAS!
如果我清楚你的要求,你需要Left Join
。如果会给你 NULL
作为你的 Else
部分。
SELECT
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date,
cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id
FROM cute_news n
LEFT JOIN
cute_fields f
ON f.cf_id = n.cf_id
WHERE
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND
FIND_IN_SET ('10', cute_news.category)
ORDER BY cute_news.date DESC
这是一个奇怪的条件语句 - 我不确定是否可行。
我有一个 MYSQL 问题:
SELECT
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date, cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id
FROM cute_news, cute_fields
WHERE
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND
cute_fields.cf_id = cute_news.cf_id AND
FIND_IN_SET ('10', cute_news.category)
ORDER BY cute_news.date DESC
我的问题是我想要:
IF ( cute_fields.cf_id = cute_news.cf_id )THEN
{ SELECT
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date, cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id
FROM cute_news, cute_fields
WHERE
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND
cute_fields.cf_id = cute_news.cf_id AND
FIND_IN_SET ('10', cute_news.category)
ORDER BY cute_news.date DESC }
ELSE {
SELECT
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date
FROM cute_news
WHERE
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND
FIND_IN_SET ('10', cute_news.category)
ORDER BY cute_news.date DESC }
ORDER BY..
真正执行这个是最困难的时候..也许这是不可能的。 在此先感谢 NINJAS!
如果我清楚你的要求,你需要Left Join
。如果会给你 NULL
作为你的 Else
部分。
SELECT
cute_news.title, cute_news.id, cute_news.avatar, cute_news.category,cute_news.date,
cute_fields.YouTubeTN, cute_fields.alternate_title, cute_fields.NewsSource, cute_fields.alternate_url, cute_fields.cf_id
FROM cute_news n
LEFT JOIN
cute_fields f
ON f.cf_id = n.cf_id
WHERE
YEAR(FROM_UNIXTIME(cute_news.date)) = '2007' AND
FIND_IN_SET ('10', cute_news.category)
ORDER BY cute_news.date DESC