MySQL笛卡尔产品:每种关系仅一次



我想知道是否有人可以在这里帮助我。

这是我需要做的:将语言表的ID拉到新表中,所有这些之间都具有独特的关系。像节点的公式n(n-1)一样。

我尝试使用笛卡尔产品,但由于A = 1 = 1和B = 2列与列a = 2和b = 1时相同。我不确定我是否可以使用SQL语句执行此操作,我想避免使用PHP脚本进行解决方法。因此,下面的SQL仅是一半。

DROP TABLE IF EXISTS lang_score;
CREATE TABLE lang_score
SELECT a.text_lang_id AS lang_1, b.text_lang_id AS lang_2 
FROM text_lang AS a, text_lang AS b 
WHERE a.text_lang_id != b.text_lang_id

我不能在这些列上放一个唯一的键,因为每个数字都会在两个列中出现不止一次。我还尝试了此表上的一些选择,但是我没有发现如何避免关系的重复。

提前感谢任何提示

编辑

有效的查询:

DROP TABLE IF EXISTS lang_score;
CREATE TABLE lang_score
SELECT a.text_lang_id AS lang_1, b.text_lang_id AS lang_2 
FROM text_lang AS a, text_lang AS b 
WHERE a.text_lang_id < b.text_lang_id

您可以尝试以下查询:

DROP TABLE IF EXISTS lang_score;
CREATE TABLE lang_score
SELECT a.text_lang_id AS lang_1, b.text_lang_id AS lang_2 
FROM text_lang AS a, text_lang AS b 
GROUP BY a.text_lang_id, b.text_lang_id

相关内容

  • 没有找到相关文章

最新更新