【问题标题】:JOIN mysql if else statementJOIN mysql if else 语句
【发布时间】: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


【解决方案1】:

如果我清楚你的要求,你需要Left Join。 If 会给你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

【讨论】:

  • 完美!正是我想要的!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 2017-02-05
  • 2015-07-06
  • 2012-08-05
相关资源
最近更新 更多