mysql - MySQL 中的 SQL 不同

标签 mysql sql distinct

我有两个没有任何关系或外键的表,我想在查询中合并两列。

 select   DISTINCT a.OdemeTuru, b.MAdi from odemeturu as a, 
 musteriler as b order by b.MID,a.OID

我可以从两者中获取值,但它是混合的且不同的不起作用。

结果如下:

'Nakit', 'Ali' 'Veresiye', 'Ali' 'Kredi Kartı', 'Ali' 'Özel', 'Ali'
'Nakit', 'Ahmet' 'Veresiye', 'Ahmet' 'Kredi Kartı', 'Ahmet' 'Özel',
'Ahmet' 'Nakit', 'Cemil' 'Veresiye', 'Cemil' 'Kredi Kartı', 'Cemil'
'Özel', 'Cemil' 'Nakit', 'Furkan' 'Veresiye', 'Furkan' 'Kredi Kartı',
'Furkan' 'Özel', 'Furkan'

但是,我想要以下内容

'Nakit', 'Ali'
'Özel', 'Ahmet'
'Veresiye', 'Cemil'
'Kredi Kartı', 'Furkan'

我的查询哪里有错误? (表的行数相同)

编辑:抱歉我忘记了一些事情。不存在a.tarih

最佳答案

我能想到的交叉应用 2 个 4 行表以获得 4 行而不是 16 行的唯一方法是加入行号:

SELECT  a.OdemeTuru, b.Madi
FROM    (   SELECT  @a:= @a + 1 AS RowNumber, OID, OdemeTuru
            FROM    odemeturu,
                    (SELECT @a:= 0) AS a
            ORDER BY OID
        ) AS a
        INNER JOIN
        (   SELECT  @b:= @b + 1 AS RowNumber, MID, Madi
            FROM    musteriler,
                    (SELECT @b:= 0) AS b
            ORDER BY MID
        ) AS b
            ON a.RowNumber = b.RowNumber

在 odemeturu 中,行按 OID 排序,而在 musteriler 中,行按 MID 排序。 odemeturu 的第一行与 musteriler 的第一行连接,第二行与第二行连接,依此类推。这是相当任意的,但似乎符合您的标准。

您可以更改子查询的排序方式来更改结果。

<小时/>

<强> Example on SQL Fiddle

关于mysql - MySQL 中的 SQL 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084368/

相关文章:

mysql - 向 MariaDB/MySQL 表添加外键

sql - 我可以 DRY SQL 吗?如何在 BEGIN ... COMMIT 中调用两个 SQL 脚本?

mysql - SQL 中的 if 语句

php - MySQL表关系,继承与否?

java - 防止在 Spring Hibernate 中存储重复值的正确方法

mysql - 如何查看 Liferay 数据库中最后创建的项目

sql - 不支持的子查询表达式 : Correlating expression cannot contain unqualified column references

mysql - 如何优化跨三个表、40k 行且仅返回 22 个结果的慢速 "select distinct"查询

sql - 加入并计算 2 个日期之间的不同值

mysql - 从 MySQL 数据库中的多个相同行中选择最新记录