我的数据库中有两个表:
(1) 短语:
t_phrase
========
I like
They prefer
...
Somebody else wants
和
(2) 地点:
n_id t_place
==== =======
1 London
2 Paris
...
N New York
表PHRASES
的行数至少与PLACES
. 我需要以这样一种方式加入这两个表,以便为每个表选择所有place
s phrase
- 但短语需要随机分布在不同的地方。整个places
表并不太大:可能大约有 3-4 千行,但是上面会有一个附加WHERE
子句,最多将输出限制为大约 200 个位置。
理想情况下,我希望它包含在一个 SQL 语句中,但到目前为止,我还无法理解这一点。因此,第二个选项是返回一行的存储函数(int, varchar, varchar)
。为此,我正在考虑以下内容:
- 以随机顺序将所有短语选择到 varchar 数组中
- 循环遍历一次取一个的位置并将其与数组中的下一个短语一起返回
不知何故,这在我看来效率很低,但我想不出更好的办法。
你能提出更好的主意吗?或者,甚至更好,一个语句 SQL,也许?
提前致谢。
编辑:请注意,这些短语不应在结果集中重复。短语的数量总是至少与地方的数量一样多。