MariaDB-我可以手动将ID添加到SELECT FROM()吗?

时间:2019-08-24 01:19:22

标签: sql select mariadb

这是简化的查询,我想在FROM ()内手动添加ID,我尝试了几种方法,但看起来不可能。

SELECT p._data FROM (
  SELECT p_id FROM p WHERE search=? LIMIT 10
)s JOIN p ON p.p_id = s.p_id

我想做这样的事情,但是行得通:

FROM (SELECT [1,2,3,4,5,6] AS p_id)s
  

“我知道我可以使用IN(),但有很多限制。” ===假

PD:我正在使用10.1.29-MariaDB。显然,在出现JSON_ARRAY()之前,它可以工作,但现在不行了。
PD2:哦,10.2.3又回来了,我可能会升级。

2 个答案:

答案 0 :(得分:1)

您可以使用UNION ALL(或UNION,如果您不希望有任何重复的话)

SELECT p._data 
FROM (SELECT 1 AS p_id UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL 
      SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) s
JOIN p ON p.p_id = s.p_id

正如@RickJames指出的那样,从MariaDB 10.1开始,您可以使用sequence engine生成数字列表:

SELECT p.p_id, p._data
FROM seq_1_to_6 s
JOIN p ON p.p_id = s.seq

Simple demo on dbfiddle

答案 1 :(得分:1)

在MariaDB中非常简单。使用此伪表:

seq_1_to_6

请参见documentation  对此的变体。 (注意:MariaDB中有两件事共享“序列”一词。)