【发布时间】:2017-10-13 01:08:14
【问题描述】:
这是一个奇怪的条件语句 - 我不确定它是否可能。
我有一个 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..
实际执行此操作最困难。也许这是不可能的。 在此先感谢忍者!
【问题讨论】:
-
你能澄清一下“做这个”和“做那个”是什么吗?它是一个单独的查询,返回不同的列,不同的位置等吗?如果是这样,请显示你想要的做这个/那个的两个版本。
-
嗨,谢谢 = 刚刚更新。
-
当您在 where 条件下使用
cute_fields.cf_id = cute_news.cf_id时,基本上转换为内部连接,您只会得到匹配的记录。所以你的if部分永远是真的。您可能想使用left join -
是的,使用 id 进行内部连接。我的数据库的问题是我有大约 500 条记录将相互匹配“cf_id”以加入表(试图避免返回并更新所有这些旧记录..)
-
你有我能看到的例子吗?
标签: mysql join conditional