【问题标题】:Selecting two certain rows from a result table?从结果表中选择两个特定的行?
【发布时间】:2015-05-20 14:09:59
【问题描述】:

如果我的结果行如下:

ID    Name     Rate_Type
1     xxxx         9
2     zzzz         22
3     cccc         12
4     eeee         17
5     uuuu         90

现在我如何选择 rate type = 9 的行和任何其他行。我希望我的查询告诉我是否有一行 Rate_type 9 并给我一行 ID 9

我想要这个结果(只有两行结果):

ID    Name     Rate_Type
1     xxxx         9
!     !!!!         !--> This should be one additional row with Rate_Type <>9  

【问题讨论】:

标签: mysql filtering


【解决方案1】:

您可以使用两个查询的union 来执行此操作。一个得到你的rate_type = 9,一个得到你的rate_type &lt;&gt; 9

(select * from t where rate_type = 9 order by rand() limit 1) 
union all
(select * from t where rate_type <> 9 order by rand() limit 1);

demo here

【讨论】:

  • 这是我的解决方案:),但我虽然有更好的方法。因为我的查询真的很大。但感谢您的回答:)
  • 那么你应该把这个放在问题中并要求一个替代方案:) 这让我觉得这是最简单的解决方案——(这个)版本是order by rand() 的缺点可能是性能杀手。如果您不在乎是否总是得到相同的结果,请删除它的那部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多